iOS 13 и UiSplitViewController при представлении в портрете отсутствует кнопка DisplayMode - PullRequest
1 голос
/ 07 января 2020

У меня та же проблема, что и здесь. Отсутствует портретный режим UISplitViewController. UIBarButtonItem

Мой SplitView содержит два NavigationController, каждый из которых содержит TableViewController. код

и метод делегата splitViewController:willChangeToDisplayMode: и splitViewController:willHideViewController:withBarButtonItem:forPopoverController: для хорошей меры

Я даже пытался добавить кнопку самостоятельно, если ее нет в splitViewController:willChangeToDisplayMode:

все еще не повезло

есть предложения?

С уважением, Кристиан

Ответы [ 2 ]

0 голосов
/ 24 января 2020

Это в основном то, что сказал @canderse, но я показываю код. Существует также хитрость, если вы хотите, чтобы ваша кнопка имела заголовок. В вашем DetailViewController переопределите следующий метод:

-(void)splitViewController:(UISplitViewController *)svc willChangeToDisplayMode:(UISplitViewControllerDisplayMode)displayMode{

//fix for missing navigation button
if(displayMode == UISplitViewControllerDisplayModePrimaryHidden){
    self.navigationItem.leftItemsSupplementBackButton = true;
    UIBarButtonItem *item=[svc displayModeButtonItem];
    [self.navigationItem setLeftBarButtonItem:item animated:YES];
}}

Чтобы кнопка имела заголовок, установите заголовок контроллера основного представления в awakeFromNib:

self.title = NSLocalizedString(@"Title", @"Title");

Если вы попытаетесь установить заголовок в willChangeToDisplayMode, он не будет работать.

0 голосов
/ 13 января 2020

Я закодировал проблему, поставив код прихода splitViewController:willChangeToDisplayMode:, если режим отображения - PrimaryHidden и контроллер подробного представления не содержит представление разбиения displauModeButtonItem в самом верхнем навигационном элементе, если контроллеры подробного просмотра leftBarButtonsItems я просто добавляю вручную

...