我想要显示一些静态单元格,所以我有一个UITableViewController。此场景中还有一个NavigationBar,顶部包含一些按钮。设置如下:
如果我有一个包含UITableView的UIViewController,则设置如下:
所以,问题是:
感谢。
答案 0 :(得分:2)
您不应该将UINavigationBar
放在UITableView
中。您应该将UITableViewController
放在UINavigationController
中,因为这会为您提供UINavigationBar
。
因此,如果您在故事板中选择UITableViewController
,则可以选择嵌入 - >编辑器菜单中的导航控制器。这将是正确的方法。
答案 1 :(得分:1)
UITableViewController的工作方式是它的根视图是UITableView。所以没有办法将UINavigationBar放在UITableView以外的任何地方。
我倾向于永远不会使用UITableViewController,因为它并没有给你带来太多。
如果你特别想使用UITableViewController,我不相信在桌面视图中有导航栏有任何实际问题。您只需确保在表视图上设置contentInset,以便导航栏不会阻止内容。虽然这样做似乎有点落后。
我的建议是使用带有导航栏和表格视图的普通UIViewController。
如果您确实需要功能导航,则需要将UITableViewController放在UINavigationController中。
希望这会有所帮助:)
如果还有什么不清楚,请告诉我。
答案 2 :(得分:1)
在iOS中使用UINavigationBar
有两种方法:
UINavigationController
(推荐)针对您的具体情况,我建议您将UITableViewController
作为rootViewController
的{{1}}。这样您就可以自动获得导航栏,您可以根据需要自定义导航栏。在典型的用户体验中,当您点击一些表视图行时,新的视图控制器将被推送到导航堆栈,因此您可能最终还是需要导航控制器。
如果您决定将导航栏用作独立对象,该怎么办?这非常好,您可以在视图层次结构中将其用作普通UINavigationController
,但是您需要创建另一个实现UIView
协议的对象并将其设置为UINavigationBarDelegate
导航栏的属性。如果您使用delegate
,则已为您设置和配置委托。您还需要使用UINavigationController
和UINavigationItem
方法在导航栏中添加/删除导航项(pushNavigationItem:animated:
的实例)。
关于您在视图层次结构上的问题,您可以在需要popNavigationItemAnimated:
的任何地方使用UITableView
。唯一需要注意的是UIView
本身就是一个视图层次结构,这可能会限制你的布局。