Xcode Objective-C Segue "Presentación en progreso"

Estoy intentando desarrollar una aplicación donde permite los inicios de session del usuario con AFNetworking. Tengo la database configurada correctamente y todo parece estar funcionando bien, excepto cuando el usuario inicia session por primera vez.

Lo que tengo es muy simplist:

[[API shanetworkingInstance] commandWithParams:params onCompletion:^(NSDictionary *json) { //result returned NSDictionary* res = [[json objectForKey:@"result"] objectAtIndex:0]; if ([json objectForKey:@"error"]==nil && [[res objectForKey:@"UserID"] intValue]>0) { [[API shanetworkingInstance] setUser: res]; [self performSegueWithIdentifier:@"Login" sender:self]; } else { //error [UIAlertView title:@"Error" withMessage:[json objectForKey:@"error"]]; } }]; 

Básicamente, el código anterior devuelve el resultado para los detalles de inicio de session de un usuario, solo es exitoso si coinciden los detalles de inicio de session. Como puede ver arriba, claramente establezco al usuario en shanetworkingInstance, usado a lo largo de la aplicación. Una vez que el usuario está configurado, bash realizar la segue, ya que es lo que debería hacer un button de inicio de session.

La segue ocurre y el progtwig está operativo, pero hay 2 problemas que no puedo resolver y he estado pasando horas intentando solucionarlo. Primero aparece el post en la window de salida de Xcode:

Advertencia: ¡Intente presentar UITabBarController en LoginVC mientras se está realizando una presentación!

Y en segundo lugar, para comprobar que el usuario estaba configurado correctamente, en la pantalla de Perfil (la primera pantalla seguida) tiene una label que tiene su text establecido en:

 NSString stringWithFormat:@"Welcome %@",[[[API shanetworkingInstance] user] objectForKey:@"username"]]; 

Y es un golpe o falta si el nombre de usuario realmente aparece o dice (nulo) como se muestra:

introduzca la descripción de la imagen aquí

También puede ver un button que hice allí, para imprimir en la window de salida los valores del usuario. Incluso cuando el post es "Bienvenido (nulo)" y presiono el button, todos los valores están correctamente allí, así que no estoy seguro de por qué la cadena a veces declara nula.

Aquí está la configuration del guión gráfico con respecto al problema que estoy teniendo:

introduzca la descripción de la imagen aquí

Si alguien pudiera ayudarme con esto, realmente lo agradecería.

A medida que se diagnostica correctamente, el problema es definitivamente una invocación extraña y / o duplicada de los segues. Al IBAction su proyecto, el problema es que su button "Iniciar session" tiene tanto un método IBAction como un segue desde esa pantalla de inicio de session al siguiente controller (el controller de barra de tabs):

tanto IBAction como segue

Eso es un problema, porque la segue se disparará cuando - (IBAction)login:(id)sender el button, pero se activará nuevamente con su - (IBAction)login:(id)sender .

Debido a que tiene una IBAction , la segue no debe ser del button al siguiente controller, sino del controller en sí. Por lo tanto, elimine su Login existente segue desde el button a la siguiente pantalla y vuelva a crearla desde el controller mismo:

cree segue del controlador a la siguiente escena

Déle a ese nuevo segue el identificador de "Inicio de session", y ahora su button de "Inicio de session" no ejecutará automáticamente el segue en sí mismo, pero permitirá que la IBAction haga su trabajo y performSegueWithIdentifier manualmente el performSegueWithIdentifier con el performSegueWithIdentifier según corresponda.

Enviar / activar el evento en: Did End On Exit

Conéctelo a su método invocando performSegueWithIdentifier .

De esta manera no se activará dos veces.