我在UISplitViewController中的右视图控制器中丢失了带有弹出窗口的navigationItem。只是当我将iPad旋转到纵向时,按钮不会出现。代码很好,我已经使用了相同的代码(当然不是绝对的)很多次,但现在我得到了这个奇怪的bug。
- (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];我不知道为什么这不起作用,我需要尽快弄清楚。请帮帮我。
发布于 2012-08-05 20:11:31
我也遇到过类似的问题。我有一个Master-Detail应用程序,并且正在使用故事板。我的细节视图控制器被嵌入到导航控制器中。UISplitViewControllerDelegate方法被正确实现,并且它们在设备旋转时被调用。栏按钮添加正确,但不可见。
问题的原因:在我的细节视图控制器的故事板中,我已经手动添加了一个导航栏,因为我没有看到任何导航栏。然而,这与我要添加按钮的导航栏并不相同。正确的导航栏隐藏在故事板中,因此在我的应用程序中不可见。
Solution:我转到故事板中的细节视图控制器,删除了我手动添加的导航栏。然后,我点击了导航控制器。在“属性检查器”下,我选中了标记为“显示导航栏”的复选框。现在,正确的栏在我的导航控制器和细节视图控制器以及我的应用程序中都可见。
发布于 2011-01-29 00:03:48
看起来你错过了DetailViewController和UISplitViewController之间的参考插座。
https://stackoverflow.com/questions/4754952
复制相似问题