Ejemplo de pantalla de inicio de sesión modalmente basada en el guión gráfico

Estoy aprendiendo ios / xcode y en una barricada.

Tengo un diseño tabbarcontroller + basado en navegación. Necesito presentar una pantalla de inicio de sesión si el usuario no está conectado. Aquí está la jerarquía básica. La página de inicio de sesión necesita una barra de navegación (como el tutorial que seguí coloca un botón “Ir” en la barra).

LoginController: (LTController.h,.m) Main View:TabBarController> NavigationController>View1>View1a NavigationController>View2 

Diseño del guión gráfico

Leí muchas publicaciones aquí en vista modal, método de delegado, etc. La mayoría de ellas son fragmentos de código que, lamentablemente, son un poco exagerados para mi nivel de principiante.

Agradecería una explicación simple sobre cómo lograr esto. Espacialmente, una nota sobre qué archivos necesitan cambios sería genial.

Gracias

Aquí está el escenario. Es tan simple . Solo espero que sea útil.

enter image description here

Para UITableBarController, dé un nombre para la identidad al ID del guión gráfico enter image description here

Luego, en su archivo de clase ViewController ¿Tiene las credenciales de autenticación a la derecha>.? Haga algunas cosas allí para la autenticación. luego sigue este código Funciona bien

 - (IBAction)Login:(id)sender { if(authenticated) // authenticated---> BOOL Value assign True only if Login Success { UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; UITabBarController *obj=[storyboard instantiateViewControllerWithIdentifier:@"tab"]; self.navigationController.navigationBarHidden=YES; [self.navigationController pushViewController:obj animated:YES]; } 

parece que has tenido un buen comienzo. Como tiene un diseño de barra de tabs, debe elegir cómo presentar la página de inicio de sesión y cuándo lo hará.

tiene que presentarlo antes de mostrar la barra de tabs o poner la lógica en su primer controlador de vista para iniciar el proceso de inicio de sesión. También hay otras formas, pero se vuelven más complicadas y quería darte opciones básicas en este momento.

Aquí está el concepto general que recomendaría.

a) crear una variable de almacenamiento persistente en alguna parte para determinar si un usuario está conectado o no.

b) agregue un cheque para este indicador en el método Ver cargará del primer controlador de vista conectado a su barra de tabs.

c) presente una página de inicio de sesión modal directamente desde el controlador de vista. si inician sesión, lo descartarán, si no, se quedarán estancados en la página modal.

entonces, aquí básicamente está cómo hacer eso:

a los efectos de explicar, voy a llamar a su primer controlador de vista – primera pestaña en su controlador tabbar – fviewController – ok?

en fviewController.m

 -(void)viewDidLoad { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; if ([[defaults objectForKey:@"loggedIn"]boolValue]) { NSLog(@"user is logged in - do nothing"); } else { NSLog(@"User is not logged in"); [self performSegueWithIdentifier:@"LoginPage" sender:self]; } } 

un par de puntos más parece que está usando guiones gráficos y secuencias. En ese caso, harías lo siguiente:

  • crea un nuevo controlador de vista para tu página de inicio de sesión
  • control arrastre una conexión segue desde el primer controlador de vista en su tabbar
  • identificar el segue como “modal”
  • crear una nueva clase de controlador de vista para el controlador de vista de inicio de sesión
  • Presente su vista y administre su autenticación
  • si el usuario está conectado, debe almacenarlo nuevamente en NSUserDefaults Nota: si tiene varios usuarios u otros esquemas, puede modificar el único valor que le mostré en el estado de seguimiento de ejemplo del usuario actual. Además: si tiene un código de finalización de sesión, debe establecer el indicador correctamente. Además: si los usuarios van a iniciar sesión y cerrar sesión con frecuencia, entonces use view en lugar de view, se cargó.

Para voltear el estado:

  NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults setValue:[NSNumber numberWithBool:YES] forKey:@"loggedIn"]; //in [defaults setValue:[NSNumber numberWithBool:NO] forKey:@"loggedIn"]; //out do this in your login controller 

Para descartar la vista modal. Técnicamente deberías usar una callback delegada para hacer esto, pero si estás tratando de mantener las cosas simples, esto debería estar bien

  [self dismissViewControllerAnimated:YES completion:^{ }]; 

Entonces su lógica sería así – ¿iniciaron sesión? Sí, configure el estado YES para iniciar sesión y luego desestime. Si no se conectan, no hagan nada. Están estancados.

Finalmente, si necesita configurar su controlador de inicio de sesión, usaría el método: prepareForSegue … para inicializar las variables antes de que ocurra el cambio. Probablemente haya leído sobre esto si está haciendo algunos tutoriales.

Bueno … espero que eso ayude. Es un enfoque muy básico. Si funciona, puede continuar agregando más seguridad y capacidades a medida que avanza.

la mejor de las suertes.