splitViewController 的 barButtonItem 未显示在屏幕上?

Posted

技术标签:

【中文标题】splitViewController 的 barButtonItem 未显示在屏幕上?【英文标题】:barButtonItem for splitViewController not shown on screen? 【发布时间】:2011-09-09 17:14:55 【问题描述】:

如何显示 SplitViewController 中的 barButtonItem?不是用 splitViewController 自动创建的吗?

我创建了一个针对 Ipad 的项目,我将我的 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;

)

但模拟只显示没有 barButtomItem 的 mainViewController 视图。

有什么想法吗?

非常感谢

【问题讨论】:

【参考方案1】:

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

[toolbar items]

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

【讨论】:

谢谢汤姆,是的,实际上同样的问题,我尝试了 chown 的代码,但工具栏似乎是空的:你通常会怎么做?我用 IB 设置了 splitVC,出现了 viewController,但没有出现工具栏……它不是通过我应该添加到代码中的任何方法自动添加的吗? 这是您自己设置的吗?我建议您尝试 SplitView 模板项目并检查差异。详细视图有一个工具栏,它不是自动创建的。 你是对的,工具栏已添加到屏幕...我没看到,谢谢,现在可以使用了!谢谢【参考方案2】:

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

【讨论】:

谢谢,是的,它确实是空的,至少它看起来是空的,因为屏幕上什么都没有出现。你平时会怎么做?我用 IB 设置了 splitVC,viewController 出现了,但没有工具栏... 确保你没有在- (void)viewWillAppear:(BOOL)animated方法中做这样的事情:self.navigationController.navigationBar.hidden = YES;toolbar.hidden = YES; 好吧,我必须自己将工具栏放在视图上,这是我的错误。感谢您的帮助!

以上是关于splitViewController 的 barButtonItem 未显示在屏幕上?的主要内容,如果未能解决你的问题,请参考以下文章

SplitViewController 更新详细视图

UINavigationController & SplitViewController

在 Tabbar 中添加 SplitViewController

使 splitViewController 的细节部分可滚动?

在 iPad 的 splitViewController 中添加 UINavigationController

SplitViewController 模板手动显示弹出框?