Кажется, что переходы раскрутки ведут себя не так, как ожидалось, в iOS 8.1 в сочетании с модальным представлением и представлением контейнера. Вот иерархия контроллера представления для тестового проекта, которую можно найти на github:
Нажатие на кнопку «Tap Me» вызывает модальное представление, которое встроено в контроллер навигации и имеет tableView в качестве дочернего контроллера представления. Нажатие на строку в tableView отправляет другой tableView. Наконец, нажатие на строку в этом последнем tableView должно вызвать переход с именем bUnwindSegue
, найденный на предыдущем контроллере представления.
Проблемы:
- bUnwindSegue никогда не вызывается.
- Согласно техническому примечанию TN2298 контроллер представления контейнера отвечает за выбор дочернего контроллера представления для обработки перехода. В этом случае
viewControllerForUnwindSegueAction:fromViewController:withSender:
следует вызывать в контроллере представления контейнера. Это не так.
В примере проекта вы можете видеть, что BTableViewController
содержит этап раскрутки:
- (IBAction)bUnwindSegue:(UIStoryboardSegue *)segue;
{
NSLog(@"Unwinding...this unwind segue will never get called.");
}
В раскадровке действие выбора ячейки для CTableViewController
действительно является bUnwindSegue
. Также обратите внимание, что если вы измените действие выбора ячейки CTableViewController
на раскрутку перехода в контроллере представления контейнера — containerVCUnwindSegue
— этот переход будет вызван правильно.
Сегменты раскрутки ведут себя не так, как ожидалось?