У меня есть универсальное приложение, в котором я использую один и тот же контроллер для раскадровки IPad и IPhone. я поставил UILongPressGestureRecognizer на UITableView, что когда клетка давила на iPhone он вызывает действие, выполнить SEGUE:prepareForSegue не вызывается после performSegue: withIdentifier: с popover style
-(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];
}
}
}
переход на вид детали выполняется как «толчок». Первое, что вы должны заметить, это то, что отправитель является NSIndexPath, это единственный способ, которым я нашел для передачи выбранной ячейки. Может быть, есть лучшее решение. Все работает отлично, в некотором смысле, что выполняется segue, и до того, как будет вызвана команда prepareForSegue.
Однако бывает, что на iPad я изменил идентификатор segue на Popover. Теперь все работает частично, выполняется segue, но prepareForSegue не вызывается, и поэтому контроллер представления назначения не настроен так, как должно быть.
Что я делаю неправильно?
У меня такая же проблема. viewdidload вызывается, но не выполняет segue – 1dayitwillmake