2011-01-21 4 views
4

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

- (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];

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

+0

Что происходит, когда вы [self setPopoverController: pc]; в первом методе (и [self setPopoverController: nil], во втором)? –

+0

Нет свойства popoverController в DetailViewController – Woyo

ответ

0

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

+0

Но оба метода делегатов каждый раз вызываются успешно. – Woyo

1

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

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

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

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