【问题标题】:Missing UIBarButtonItem in the UISplitViewControllerUISplitViewController 中缺少 UIBarButtonItem
【发布时间】:2011-01-21 02:54:42
【问题描述】:

我在 UISplitViewController 内的右侧视图控制器中缺少带有弹出框的 navigationItem。当我将 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];

我不知道为什么这不起作用,我需要尽快解决。请帮帮我。

【问题讨论】:

  • 当你 [self setPopoverController:pc];在第一种方法中(和 [self setPopoverController:nil]; 在第二种方法中)?
  • DetailViewController中没有属性popoverController

标签: objective-c cocoa-touch ipad uisplitviewcontroller


【解决方案1】:

我遇到了类似的问题。我有一个 Master-Detail 应用程序,并且正在使用 Storyboards。我的详细视图控制器嵌入在导航控制器中。 UISplitViewControllerDelegate 方法已正确实现,并且在设备旋转时被调用。条形按钮已正确添加,但不可见。

问题原因:在我的详细视图控制器的 Storyboards 中,我手动添加了一个导航栏,因为我没有看到任何导航栏。但是,这与我添加按钮的导航栏不同。正确的导航栏隐藏在 Storyboard 中,因此在我的应用中不可见。

解决方案:我在 Storyboards 中的详细视图控制器中删除了我手动添加的导航栏。然后,我点击了导航控制器。在“属性检查器”下,我选中了标有“显示导航栏”的框。现在,在我的导航控制器和详细视图控制器以及我的应用程序中都可以看到正确的栏。

【讨论】:

    【解决方案2】:

    您似乎错过了 DetailViewController 和 UISplitViewController 之间的引用出口。

    【讨论】:

    • 但是这两个委托方法每次都被成功调用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-23
    • 2014-10-16
    • 1970-01-01
    • 2012-10-23
    相关资源
    最近更新 更多