Ich habe eine Tabellenansicht mit verschiedenen Arten von Tabellenansichtszellen darin. In einer der Zellen befinden sich zwei Schaltflächen, die beim Drücken einen Ansichtscontroller laden. Ich verwende die folgende Funktion, um den Schaltflächen-Druck zu behandeln:
- (IBAction)leftButtonPressed:(id)sender
{
// Die gedrückte Schaltfläche erhalten
UIButton *button = (UIButton*)sender;
// Den Indexpfad erhalten
NSIndexPath *indPath = [NSIndexPath indexPathForRow:button.tag inSection:0];
// Laden der richtigen Daten aus meinem Datenspeicher
NSArray *clickedEvent = [[[SOEventManager sharedEventManager] eventsArray] objectAtIndex:indPath.row];
[[SOEventManager sharedEventManager] setSelectedEvent:clickedEvent[0]];
// Alles funktioniert bis zu diesem Punkt wie es sollte
// Durchführung des Segues...
[self performSegueWithIdentifier:@"buttonSegue" sender:self];
}
Mein buttonSegue soll einen neuen Ansichtscontroller drücken. Irgendwie wird es stattdessen zweimal gedrückt, sodass ich die folgende Warnung erhalte:
2013-11-27 01:48:30.894 Self-Ordering App[2081:70b] Verschachtelte Push-Animation kann zu einer beschädigten Navigationsleiste führen
2013-11-27 01:48:31.570 Self-Ordering App[2081:70b] Der Abschluss einer Navigationsübergang in einem unerwarteten Zustand. Der Navigationsleisten-Unterbaum könnte beschädigt werden.
In meinem Fall führt dies zu einem Absturz, da es einen Ereignis gibt, bei dem ich möchte, dass die App sofort den Ansichtscontroller poppt, sodass sie zur Tabellenansicht zurückkehren kann. Ich verwende dafür eine Alertview und behandele das Ereignis wie folgt:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSString *buttonTitle = [alertView buttonTitleAtIndex:buttonIndex];
// ...
// Zusätzliche Überprüfung der Schaltflächentitel....
else if ([buttonTitle isEqualToString:NSLocalizedString(@"Vissza", nil)])
{
[self.navigationController popViewControllerAnimated:YES];
}
}
Es könnte interessant sein zu erwähnen, dass ich einen anderen Segue von meiner "regulären" Tabellenansichtszelle habe und in diesem Fall verwende ich die prepareForSegue: Methode
- (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];
}
}
In diesem Fall wird der Ansichtscontroller perfekt gedrückt und sogar sofort poppt, wenn das erforderlich ist. Ich teste dies auf iOS7 und Xcode 5. Ich habe ein solches Problem noch nie zuvor erlebt, jede Hilfe wäre sehr willkommen.