2011-09-09 67 views
0

如何显示SplitViewController中的barButtonItem?是不是用splitViewController自动创建的?barButtonItem for splitViewController不显示在屏幕上?

我创建了一个针对Ipad的projet,我把我的mainViewController作为控制器视图放在纵向模式的屏幕上,并且我用它的tableView创建了另一个uiviewController“RootViewController”。

我把两种方法:

- (void)splitViewController: (UISplitViewController*)svc willHideViewController: 
- (void)splitViewController: (UISplitViewController*)svc willShowViewController: 
在我mainViewController

,例如:

// Called when rotating to a portrait orientation. 
- (void)splitViewController: (UISplitViewController*)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController: (UIPopoverController*)pc 
{ 
    barButtonItem.title = @"Root List"; 
    NSMutableArray *items = [[toolbar items] mutableCopy]; 
    [items insertObject:barButtonItem atIndex:0]; 
    [toolbar setItems:items animated:YES]; 
    [items release]; 
    self.mainPopoverController = pc; 
} 

(mainPopoverC ...坐落在.h文件中:

UIPopoverController * mainPopoverController;

但模拟只显示barViewButomItem的mainViewController视图。

有什么想法?

非常感谢

回答

1

如果您的工具栏中包含任何项目,

[toolbar items] 

为零,所以你mutableCopy进入深空...

+0

谢谢汤姆,是的,所以同样的问题实际上,我尝试了chown的代码和工具栏似乎是空的:你通常会怎么做?我用IB设置splitVC,viewController出现,但不是工具栏...不是它自动添加的任何方法,我应该添加到代码? – Paul

+1

你是自己设置的吗?我建议你尝试SplitView模板项目并检查差异。 detailview在那里有一个工具栏,它不是自动创建的。 – Tom

+0

你是对的,工具栏被添加到屏幕上......我没有看到,谢谢,它现在有效!谢谢 – Paul

1

尝试内willHideViewController是这样的:

UIBarButtonItem *menuButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Root List" style:UIBarButtonItemStyleBordered target:self action:@selector(showPopover:)]; 
NSMutableArray *items = [[NSMutableArray alloc] initWithArray:toolbar.items]; 
if ([items count]) { 
    [items insertObject:menuButtonItem atIndex:0]; 
    [toolbar setItems:items]; 
} 
[menuButtonItem release]; 
[items release]; 
+0

谢谢,是的,它确实是空的,至少它似乎是空的,因为没有出现在屏幕上。你通常会怎么做?我设置了IB的splitVC,viewController出现,但不是工具栏... – Paul

+0

确保你没有这样做:'self.navigationController.navigationBar.hidden = YES;'或'toolbar.hidden = YES;'在' - (void)viewWillAppear:(BOOL)animated'方法中。 – chown

+0

好吧,我不得不把自己的工具栏放在视图上,我的错误。谢谢你的帮助! – Paul