UINavigationController & SplitViewController

Posted

技术标签:

【中文标题】UINavigationController & SplitViewController【英文标题】: 【发布时间】:2012-11-26 09:48:22 【问题描述】:

我有一个项目,我使用NavigationController 作为我的SplitViewController 的详细视图。

所以当应用程序出现时,两个方向的一切都很好。但是,一旦我在导航控制器中推送视图,如果我处于纵向模式,我的“显示主视图”(uisplitview 委托)按钮将消失,uinavigationcontroller 的“后退”按钮将取代它。如果我按下后退按钮弹出我的视图,“显示主视图”按钮就会回来。

我的问题是,即使我已经推送了一些视图,我如何管理我希望能够在我的 UINavigationBar 中显示两个按钮(“返回”、“显示大师”)的事实?

【问题讨论】:

【参考方案1】:

您可以使用 UIToolbar 来完成。您必须首先隐藏导航栏并在视图顶部放置一个 UiToolbar。

现在您可以根据需要添加按钮。

UIToolbar *tools = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 20, 1036, 42)];          
tools.barStyle = UIBarStyleBlackTranslucent;
NSMutableArray* buttons = [[NSMutableArray alloc] initWithCapacity:3];

UIBarButtonItem * backButton = [[UIBarButtonItem alloc] initWithCustomView:myCustomView];
[buttons addObject:backButton];

//you can add also a spacer
UIBarButtonItem *spacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
[buttons addObject:spacer];

UIBarButtonItem * homeButton = [[UIBarButtonItem alloc] initWithCustomView:myCustomView];
[buttons addObject:homeButton];
[tools setItems:buttons animated:NO];

【讨论】:

【参考方案2】:

普通的UINavigationBar 根本无法做到这一点。

您必须将“显示主视图”按钮放在其他地方 - 例如在详细视图底部的 UIToolbar 中。

或者您可以编写自己的 NavigationController 和 NavigationBar,但这需要更多的工作。 :)

【讨论】:

以上是关于UINavigationController & SplitViewController的主要内容,如果未能解决你的问题,请参考以下文章

UINavigationController改变UINavigationBar导航条标题颜色跟字体

UINavigationController导航控制器

UINavigationController

UINavigationController

iOS学习心得——UINavigationController

ios自定义UINavigationController