UISplitViewController中缺少UIBarButtonItem

Woy*_*oyo 5 cocoa-touch objective-c ipad uisplitviewcontroller

我在UISplitViewController内部的右视图控制器中缺少带有popover的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;
}
Run Code Online (Sandbox Code Playgroud)

所有这些东西都是使用这样的代码创建的...

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];
Run Code Online (Sandbox Code Playgroud)

我不知道为什么这行不通,我需要尽快解决。请帮帮我。

Raf*_*nso 0

看起来您错过了 DetailViewController 和 UISplitViewController 之间的引用出口。