Ho un'app universale, dove sto condividendo lo stesso controller per uno storyboard IPad e IPhone. Ho messo un UILongPressGestureRecognizer su un UITableView, che quando si preme una cella iPhone richiama un'azione che esegue un segue:prepareForSegue non viene chiamato dopo performSegue: withIdentifier: con stile popover
-(IBAction)showDetail:(id)sender {
UILongPressGestureRecognizer *gesture = (UILongPressGestureRecognizer*)sender;
if (gesture.state == UIGestureRecognizerStateBegan) {
CGPoint p = [gesture locationInView:self.theTableView];
NSIndexPath *indexPath = [self.theTableView indexPathForRowAtPoint:p];
if (indexPath != nil) {
[self performSegueWithIdentifier:SEGUE_DETAIL sender:indexPath];
}
}
}
la segue è una vista di dettaglio eseguita come una 'spinta'. La prima cosa che dovresti notare è che il mittente è un NSIndexPath, è l'unico modo che ho trovato per passare la cella selezionata. Forse c'è una soluzione migliore. Tutto funziona bene, nel senso che viene eseguito il seguito e prima che venga chiamato anche prepareForSegue.
Tuttavia accade che su iPad, ho cambiato l'identificatore di seguito a Popover. Ora le cose funzionano in parte, il seguito viene eseguito, ma prepareForSegue non viene chiamato e quindi il controller della vista di destinazione non è impostato come dovrebbe essere.
Cosa sto sbagliando?
Sto vivendo lo stesso problema. viewdidload viene chiamato ma non esegue segue – 1dayitwillmake