#objective-c #ios #ipad #delegates #uisplitviewcontroller
#objective-c #iOS #iPad #делегаты #uisplitviewcontroller
Вопрос:
Я настраиваю раскадровку на основе приложения Master-Detail, встраиваю представление detail в контроллер навигации и добавляю новый объект контроллера представления таблицы, который я буду использовать в качестве второго контроллера представления detail.
Затем я запускаю новый контроллер представления деталей со следующим кодом (вместо перехода, потому что я одновременно запускаю как корневой вид, так и контроллер представления деталей. Отображается только код подробного представления).
// Push the detailView view controller:
NewClass *newViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"test"];
newViewController.navigationItem.hidesBackButton = YES;
self.splitViewController.delegate = newViewController;
[self.detailViewController pushViewController:newViewController animated:YES];
Это работает отлично, ЗА ИСКЛЮЧЕНИЕМ того, что методы делегирования SplitView никогда не вызываются до или после нажатия. Если я делаю это в портретном режиме, после того, как он нажимает DetailViewController, кнопка для выпадения всплывающего окна MasterView не отображается, пока я не переключусь в альбомный режим, а затем обратно в портретный режим.
Как я могу вызвать методы делегирования разделенного контроллера представления willHideViewController / willShowViewController или вручную вызвать их вызов?
Ответ №1:
Итак, из того, что я нашел, он не вызывает метод, потому что ориентация не изменилась.
Что вам нужно сделать, так это передать кнопку из контроллера представления представления, поскольку она уже привязана к всплывающему окну следующим образом:
if(self.navigationItem.leftBarButtonItem != nil) {
newViewController.navigationItem.leftBarButtonItem = self.navigationItem.leftBarButtonItem;
}
// Push the newViewController
Комментарии:
1. Спасибо за публикацию вашего решения. У меня была именно эта проблема, и она сводила меня с ума в течение нескольких дней. Не могли бы вы (если помните — я понимаю, что это было более года назад) показать мне, где вы «нашли, он не вызывает метод, потому что ориентация не изменилась»?
2. В нижней части ссылки на класс UISplitViewController ( developer.apple.com/library/ios/#documentation/uikit/reference / … ) в разделе Обсуждения двух методов говорится: «Когда контроллер представления поворачивается из книжной ориентации в альбомную» (или наоборот)…. Когда вы нажимаете новый контроллер представления, вы не вращаетесь.
3. Спасибо. Я предполагаю, что я делаю что-то, что не рекомендуется для решения этой проблемы, но это не демонстрация, поэтому я собираюсь посидеть над этим некоторое время.