2011-10-24 2 views
2

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

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

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

ответ

2

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

То, что вы должны сделать, это передать кнопки от презентативного контроллера представления, так как он уже привязан к пирог, как это:

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

// Push the newViewController 
+0

Спасибо за размещение решения. У меня была эта точная проблема, и это заводило меня в течение нескольких дней. Вы не возражаете (если вы помните, я понимаю, что прошло более года назад), показывая мне, где вы «нашли, это не вызывает метод, потому что ориентация не изменилась»? – Darrrrrren

+1

В нижней части ссылки на класс UISplitViewController (http://developer.apple.com/library/ios/#documentation/uikit/reference/UISplitViewControllerDelegate_protocol/Reference/Reference.html#//apple_ref/occ/intfm/UISplitViewControllerDelegate/splitViewController : willShowViewController: invalidatingBarButtonItem :) в разделе «Обсуждение» двух методов: «Когда контроллер просмотра поворачивается с портретной ориентации на альбомную ориентацию» (или наоборот) ... Когда вы нажимаете новый контроллер просмотра, вы становитесь вращающийся. – lnafziger

+0

Спасибо. Я предполагаю, что я делаю то, что не рекомендуется использовать в этой проблеме, но это не шоу-стоппер, поэтому я буду сидеть на нем какое-то время. – Darrrrrren

Смежные вопросы