UISplitViewController не вызывает методы делегата при выдвижении нового detailView - PullRequest
2 голосов
/ 24 октября 2011

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

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

1 Ответ

3 голосов
/ 26 октября 2011

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

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

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

// Push the newViewController
...