如何在 iOS 5.1 的 uiSplitViewController 中设置 barButtonItems?

Posted

技术标签:

【中文标题】如何在 iOS 5.1 的 uiSplitViewController 中设置 barButtonItems?【英文标题】:How can I set barButtonItems in a uiSplitViewController in iOS 5.1? 【发布时间】:2012-04-16 04:39:31 【问题描述】:

我正在使用 XCode 4.3.1 中的 Master-Detail 模板,并且想要访问 detailView 控件上的工具栏。

[self navigationItem] 设置标题:

设置标题,但我不知道如何通过 xib 或以编程方式添加 barButtonItems。过去,使用较早的 SplitView 模板(当主视图称为根视图时),我可以通过 MainWindow.xib 中的拆分视图控制器访问 rootView 工具栏,并且在 detailView.xib 文件中就有 detailView 工具栏。

在 detailView 工具栏上设置这些项目(我有 4 个)的最佳方式是什么?

提前致谢。

【问题讨论】:

【参考方案1】:

所以我有一个答案 - 如果你有更好的答案,请告诉我!

在我的 masterViewController 的 viewDidLoad 方法中,我用

填充了详细视图上的工具栏

[_detailViewController.navigationItem setRightBarButtonItems:[NSArray arrayWithObjects: _detailViewController.firstButton, _detailViewController.secondButton, _detailViewController.thirdButton, nil]];

我用

创建了这些按钮

_detailViewController.firstButton = [[UIBarButtonItem alloc] initWithTitle:@"First" style:UIBarButtonItemStylePlain target:self action:@selector(firstButtonAction:)];

我已经在 detailViewController.h 文件中声明了这些按钮中的每一个,以便以后可以引用它们,但可能不需要使用这些名称 - 它只是使这里的代码更长。我还有一个无法添加到按钮数组中的 uiButton,因此我创建了一个按钮,将其放在 View 中,然后将其设置为导航项的 titleView:

   _detailViewController.biggerButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 230, 35)];
    [[_detailViewController biggerButton] addTarget:self action:@selector(biggerButtonTap:) forControlEvents:UIControlEventTouchUpInside];
    UIView *biggerButtonView = [[UIView alloc] initWithFrame:CGRectMake(80, 3, 230, 35)];

    [biggerButtonView addSubview:_detailViewController.biggerButton];

    _detailViewController.navigationItem.titleView = biggerButtonView;

【讨论】:

以上是关于如何在 iOS 5.1 的 uiSplitViewController 中设置 barButtonItems?的主要内容,如果未能解决你的问题,请参考以下文章

UISplitView,在设置代表时接收语义问题

如何对 UISplitView 进行动画切换?

如何在 UISplitView 的详细视图中清除 UIWebView 的内容

我应该如何使用 UISplitView 自适应用户界面呈现 UISearchController?

无法使用 UISplitView 在 TableView 上添加 NavigationController

如何在 iOS 5.1 的 uiSplitViewController 中设置 barButtonItems?