UISplitViewController не вызывает методы делегата при нажатии new detailView


Я настраиваю раскадровку на основе приложения Master-Detail, встраиваю детальный вид в навигационный контроллер и добавляю новый объект table view controller, который буду использовать в качестве второго контроллера детального вида.

Затем я толкаю новый контроллер детального вида со следующим кодом (вместо segue, потому что я толкаю и корневой вид и контроллер детального вида одновременно. Отображается только код детального представления).

// 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 никогда не вызываются до или после push-запроса. Если я делаю это в портретном режиме, после того, как он нажимает detailViewController, кнопка для выпадения всплывающего окна masterView не появляется, пока я не повернусь в альбомный режим, а затем обратно в портретный режим.

Как я могу вызвать методы делегата willHideViewController/willShowViewController split view controller или вручную вызвать их?

1 2

1 ответ:

Итак, из того, что я нашел, он не вызывает метод, потому что ориентация не изменилась.

Что вам нужно сделать, так это передать кнопку от контроллера представления представления, так как она уже привязана к popover следующим образом:

if(self.navigationItem.leftBarButtonItem != nil) {
    newViewController.navigationItem.leftBarButtonItem = self.navigationItem.leftBarButtonItem;
}

// Push the newViewController