UISplitViewController портретный режим отсутствует UIBarButtonItem - PullRequest
8 голосов
/ 27 мая 2011

У меня есть приложение с UISplitViewController, когда я запускаю приложение в режиме potrait, отсутствует «групповой» UIBarButtonItem. Мне нужно переключиться в ландшафтный режим и вернуться к портрету, чтобы он появился. Когда я запускаю его в ландшафтном режиме, он там. Вот скриншот, чтобы прояснить это:

Это когда приложение запускается в портретном режиме enter image description here

Это в альбомном режиме, после его поворота из портретного режима: enter image description here

Это после возврата из портретного режима в портретный режим: enter image description here

Ответы [ 2 ]

4 голосов
/ 27 мая 2011

То же самое случилось со мной пару дней назад.Вам просто нужно убедиться, что подробный вид является делегатом splitView.Если вы попытаетесь установить делегат в подробном представлении viewDidLoad, он не будет установлен до тех пор, пока не будет загружена splitView (с корневым контроллером tableView).Вот почему он не размещается, пока вы не переключитесь в ландшафт и обратно.Лучший способ установить делегат - либо в файле реализации делегата приложения (когда вы создаете UISplitViewController, который был бы лучшей идеей), либо в корневом контроллере tableView с чем-то вроде

- (void)viewDidLoad {
    self.splitViewController.delegate = [self.splitViewController.viewControllers objectAtIndex:1];
}

, что делаетделегат подробного представления, поэтому, когда он загружается после загрузки контроллера tableView, он вызывает ваш метод splitViewController:willHideViewController:....

Конечно, это может быть не та ситуация, которая у вас есть.Я просто предполагаю, что, поскольку у меня было точно такое же поведение, это, вероятно, та же причина.Если это не сработает, просто скажите, и мы найдем причину

0 голосов
/ 03 октября 2012

Я также не мог разобраться в этой проблеме, так как мой код и соединения IB казались идентичными тому, что было в примере исходного кода Apple Multiple Detail Views.

Мне удалось заставить его работать должным образом, изменив ссылку с self.splitViewController (свойство класса контроллера левого представления) во 2-й до последней строке на svc автоматически передается в метод. Я заметил в отладчике, что первый еще не был создан по какой-то причине. (ячейка памяти была 0x00000000).

- (void)splitViewController:(UISplitViewController*)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController:(UIPopoverController*)pc {

// Keep references to the popover controller and the popover button, and tell the detail view controller to show the button.
barButtonItem.title = @"Menu";
self.popoverController = pc;
self.rootPopoverButtonItem = barButtonItem;
UIViewController <SubstitutableDetailViewController> *detailViewController = [self.splitViewController.viewControllers objectAtIndex:1];
[detailViewController showRootPopoverButtonItem:rootPopoverButtonItem];

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...