Ho una vista tabella con diversi tipi di celle di visualizzazione tabella. In una delle celle, ci sono due pulsanti, che caricano un controller di visualizzazione quando viene premuto. Sto usando la seguente funzione per gestire la pressione del pulsante:Seguito iOS eseguito due volte
- (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];
}
Il mio buttonSegue dovrebbe premere un nuovo controller di visualizzazione. In qualche modo invece di spingere una volta, sembra essere spingere due volte, quindi ottengo il seguente avviso:
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.
Nel mio caso si porta ad un crash, poiché non v'è un evento in cui voglio l'applicazione per pop subito il controller della vista in modo che torni alla mia vista tabella. Io uso un alertview per questo e gestire l'evento con il seguente:
- (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];
}
}
Potrebbe me interessante notare che ho un altro segue dal mio "regolare" cella di vista tabella, e in quel caso io uso il prepareForSegue : metodo
- (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 questo caso, il controller della vista viene premuto perfettamente e viene anche saltato immediatamente se necessario. Sto testando questo su iOS7 e Xcode 5. Non ho riscontrato un problema come questo prima, qualsiasi aiuto sarebbe molto apprezzato.
Sei sicuro di aver cablato correttamente le azioni nel builder dell'interfaccia? forse hai cablato l'evento per, ad esempio, sia ritocco interno che tocco interno invece di ritoccare semplicemente all'interno. o forse hai anche assegnato il seguito da entrambi i codici e di nuovo nel generatore di interfacce. li hai controllati? è un errore comune –
Oh dannazione .. In effetti hai ragione, assegno i miei pulsanti anche nei metodi di visualizzazione delle origini dati della tabella .. Grazie per la tua risposta! –