ios:关于 NavigationController 的问题。强制与否?
Posted
技术标签:
【中文标题】ios:关于 NavigationController 的问题。强制与否?【英文标题】:ios : questions about NavigationController. Mandatory or not ? 【发布时间】:2013-01-30 19:59:01 【问题描述】:我有一个关于 NavigationController 的问题。
首先,如果我使用情节提要和多个视图,导航控制器是强制性的吗?
我有第一个 ViewController,并且我在 Push 模式下创建了一个链接(Storyboard Segue)到另一个视图(inappsettingskit 视图)。是否必须有一个 NavigationController 才能工作,或者我可以在没有 NavigationController 帮助的情况下通过 Push 打开第二个视图?
另一个问题:我尝试将 NavigationController 链接(根)添加到我的主 ViewController。但我不想在这个视图上有一个导航栏。它会自动在此视图上放置一个带有“显示”按钮的导航栏。可以去掉吗?
我试图在 NavigationController 的选项中将其删除(取消选中导航栏),但它仍然出现在我的状态栏上!我怎样才能完全删除它?
最后一个问题:如果我将 Push Segue 视图中的按钮链接到第二个视图控制器,它可以工作。但是,如果我从工具栏链接按钮,它就不起作用.. 缺少什么?
【问题讨论】:
【参考方案1】:1.) 不,导航控制器只是让在多个视图之间导航变得更加容易。
2.) 为了让标准的“Push”segue 工作,您必须使用导航控制器
3.) 您可以在代码中隐藏导航栏。这样做的好地方是viewWillAppear
[self.navigationController setNavigationBarHidden:YES animated:YES];
我不确定为什么工具栏上的按钮不起作用,但请尝试使用 UIBarButtonItem
而不是 UIButton
【讨论】:
好的,UIBarButtonItem 很好用.. 而不是 UIBarButton 中的 UIButton,谢谢【参考方案2】:如果您使用的是 push segues,是的,您应该有一个导航控制器。如果您不希望导航栏可见,请在 Interface Builder 中选择导航控制器,然后在 Interface Builder 最右侧面板的属性检查器中取消选中“显示导航栏”选项。
您可以通过setNavigationBarHidden:animated:
以编程方式显示或隐藏控制器的导航栏。
通过隐藏导航栏的导航控制器,您可以享受导航控制器跟踪视图控制器堆栈的功能,从而使您能够弹出视图控制器(或弹出“到”特定控制器或弹出到根控制器)。但是,如果导航栏被隐藏,您显然会丢失内置的“返回”按钮。
最后,如果您想要UIToolbar
或导航栏中的按钮,您应该使用UIBarButtonItem
(在 Interface Builder 控件列表中列为“Bar Button Item”)。
【讨论】:
对不起,我的 SHOW 的问题是错误的代码没有注释......现在一切正常以上是关于ios:关于 NavigationController 的问题。强制与否?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 viewDidLoad 中的 self.navigationController 为空?