iOS segue exécutée deux fois
J'ai une table avec vue différents types d'affichage de tableau de cellules. Dans l'une des cellules, il y a deux boutons, qui charge une-vue-contrôleur lorsqu'il est pressé. Je suis l'aide de la fonction suivante à gérer appuyez sur le bouton:
- (IBAction)leftButtonPressed:(id)sender
{
//Getting the pressed button
UIButton *button = (UIButton*)sender;
//Getting the indexpath
NSIndexPath *indPath = [NSIndexPath indexPathForRow:button.tag inSection:0];
//Loading the proper data from my datasource
NSArray *clickedEvent = [[[SOEventManager sharedEventManager] eventsArray] objectAtIndex:indPath.row];
[[SOEventManager sharedEventManager] setSelectedEvent:clickedEvent[0]];
//Everything working as it should up to this point
//Performing seque...
[self performSegueWithIdentifier:@"buttonSegue" sender:self];
}
Mon buttonSegue est censé pousser une nouvelle vue-contrôleur. En quelque sorte, au lieu de pousser une fois, il semble être en poussant deux fois, donc, je reçois le message d'avertissement suivant:
2013-11-27 01:48:30.894 Self-Ordering App[2081:70b] nested push animation can result in corrupted navigation bar
2013-11-27 01:48:31.570 Self-Ordering App[2081:70b] Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.
Dans mon cas, il conduit à un crash, car il y a un événement dans lequel je veux l'app immédiatement pop la-vue-contrôleur, donc un aller retour à ma table de la vue. J'utilise un alertview pour cela et pour gérer l'événement avec les éléments suivants:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSString *buttonTitle = [alertView buttonTitleAtIndex:buttonIndex];
//...
//Additional checking of button titles....
else if ([buttonTitle isEqualToString:NSLocalizedString(@"Vissza", nil)])
{
[self.navigationController popViewControllerAnimated:YES];
}
}
Il pourrait être intéressant de noter que j'ai une autre séquence à partir de mon "réguliers" à la vue de la table de la cellule, et dans ce cas j'utilise le prepareForSegue: méthode
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"detailSegue"])
{
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
SOEvent *selectedEvent = [[[SOEventManager sharedEventManager] eventsArray] objectAtIndex:indexPath.row];
[[SOEventManager sharedEventManager] setSelectedEvent:selectedEvent];
}
}
Dans ce cas-la-vue-contrôleur est poussé à la perfection, et même sauté immédiatement, si cela est nécessaire. Je suis en train de tester cela sur iOS7 et Xcode 5. Je n'ai pas encore rencontré un problème de ce genre auparavant, toute aide serait grandement appréciée.
Oh putain.. Vous êtes en fait juste, je céder mes boutons dans la vue de table de source de données, méthodes.. je vous Remercie pour votre réponse!
OriginalL'auteur József Vesza | 2013-11-27
Vous devez vous connecter pour publier un commentaire.
Peut-être que vous souhaitez connecter votre enchaîne avec Vue Contrôleurs au lieu de UIButtons!
Vous devriez probablement avoir les enchaîne filaire avec certaines bouton comme ceci:
Mais vous devriez fil avec le point de vue des contrôleurs de la place:
OriginalL'auteur Mário Carvalho
Réponse par peut poyrazoğlu:
J'ai été de l'affectation de la touche jusqu'à l'intérieur des actions pour chaque bouton à la fois le storyboard et mon tableview de source de données de méthodes.
Merci pour votre aide rapide peut poyrazoğlu!!
J'étais le chargement, le nouveau-vue-contrôleur 2x également. J'ai connecté la séquence à partir de la vue du contrôleur à la place de la tableview cellule, ce qui a résolu le problème.
OriginalL'auteur József Vesza
Pour Swift 3, xcode, et ios 9+, qui est ce que j'utilise: assurez-vous que vous êtes le dessin des enchaînements de votre UIViewControllers et pas de boutons ou d'autres interfaces.
J'ai eu le même problème, et il suffit de changer le début de la séquence à partir de la UIController au lieu du bouton supprimé ce bug.
OriginalL'auteur Samman Bikram Thapa
J'ai toujours ce problème quand j'ai mes boutons câblés directement jusqu'à la destination-vue-contrôleur. Vous devez assurez-vous que vous devez d'abord supprimer l'ancien segue vous avez fait, puis cliquez sur la vue contrôleur (d'où vous venez) et CTRL + clic pour contrôleur de destination.
Cela devrait résoudre le problème 🙂
OriginalL'auteur Matthew Zourelias