Отсутствует UIBarButtonItem в UISplitViewController - PullRequest
4 голосов
/ 21 января 2011

У меня отсутствует навигационный элемент с поповером в контроллере моего правого представления внутри UISplitViewController. Просто кнопка не появляется, когда я поворачиваю iPad в портретную ориентацию. Код просто отлично, я использовал один и тот же (не совсем конечно) много раз, но сейчас у меня есть эта странная ошибка.

- (void)splitViewController:(UISplitViewController *)svc 
     willHideViewController:(UIViewController *)aViewController 
          withBarButtonItem:(UIBarButtonItem *)barButtonItem 
       forPopoverController:(UIPopoverController *)pc
{
    barButtonItem.title = aViewController.title;
    self.navigationItem.rightBarButtonItem = barButtonItem;
/*
this method gets called, class is set to be delegate of split view,
barButtonItem && self.navigationItem are not nils.
*/
}

- (void)splitViewController:(UISplitViewController *)svc 
     willShowViewController:(UIViewController *)aViewController 
  invalidatingBarButtonItem:(UIBarButtonItem *)button
{
    self.navigationItem.rightBarButtonItem = nil;
}

Все эти вещи создаются с использованием кода, подобного этому ...

UISplitViewController *svc = [[UISplitViewController alloc] init];
UINavigationController *rightNav = [[UINavigationController alloc] init];
DetailViewController *dvc = [[DetailViewController alloc] initWithSomeArgs:args];
[rightNav pushViewController:dvc animated:NO];
svc.delegate = dvc;
svc.viewControllers = [NSArray arrayWithObjects:tabBarController, rightNav, nil]; 
// tabBar is good, not nil and working well on the iPhone
[self.window addSubview:svc.view];
[dvc release]; [rightNav release];

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

Ответы [ 2 ]

1 голос
/ 05 августа 2012

У меня была похожая проблема. У меня было приложение Master-Detail и я использовал раскадровки. My Detail View Controller был встроен в навигационный контроллер. Методы UISplitViewControllerDelegate были реализованы правильно, и они вызывались при повороте устройства. Кнопка панели добавлялась правильно, но не была видна.

Причина проблемы: В раскадровках в моем детализированном контроллере я добавил панель навигации вручную, поскольку в противном случае панель навигации не видна. Однако это была не та панель навигации, к которой я добавлял кнопку. Правильная панель навигации была скрыта в раскадровках и поэтому не видна в моем приложении.

Решение : я перешел к своему детализированному контроллеру в раскадровке и удалил панель навигации, которую я добавил вручную. Затем я нажал на контроллер навигации. Под «Инспектором атрибутов» я установил флажок «Показывать панель навигации». Теперь правильная панель была видна как в моем контроллере навигации, так и в контроллере подробного просмотра, а также в моем приложении.

0 голосов
/ 28 января 2011

Похоже, что вы пропустили канал ссылки между вашим DetailViewController и UISplitViewController.

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