我有一个类型UITableViewController
的类。
这个类有一个UINavigationBar
类型的成员,我用它来添加表视图的编辑按钮。
使用此方法调用无效。
[self.navigationController pushViewController:controller];
如何选择表格行而不将UITableViewController
包裹在UINavigationController
中,将详细视图推送到视图上?
答案 0 :(得分:38)
如果您不想使用导航控制器,最接近的选择是模态视图控制器。
[self presentViewController:controller animated:YES completion:nil];
这会将控制器从底部滑入屏幕,或者如果您更改控制器的modalTransitionStyle
,它可以翻转或淡入。
要解除控制器,只需致电:
[self dismissViewControllerAnimated:YES completion:nil];
答案 1 :(得分:14)
还可以像往常一样使用导航控制器然后隐藏它。
要使用故事板隐藏导航控制器:选择它并取消选中属性检查器中的“显示导航栏”。其他人可能会建议隐藏每个控制器中的导航栏,但问题是它会出现一毫秒然后消失。
答案 2 :(得分:10)
我会将UITableView包装在UINavigationController中,只是隐藏UINavigationBar。
[self.navigationController setNavigationBarHidden:YES animated:NO];
然后创建一个后退按钮,将ViewController弹出堆栈。
[self.navigationController popViewControllerAnimated:YES]
答案 3 :(得分:6)
如果没有导航控制器,则无法将视图控制器推送到导航控制器。如果您想要推动控制器并让它显示最顶层的控制器和所有内容,只需使用UINavigationController并完成它。
您可以将任意UINavigationItem推送到您的UINavigationBar,当用户使用后退按钮时,您的酒吧代表将会收到通知,以便您采取适当的措施。有关详细信息,请参阅the documentation。
答案 4 :(得分:1)
没有UINavigationController
你无法推动视图控制器,这是真的。您宁愿通过UIViewController.present(_ viewControllerToPresent:, animated:, completion:)
但是可以创建一个自定义segue来显示视图控制器,就好像它是一个推(或任何其他你想要的动画),虽然看起来使用UINavigationController
只会让事情变得更容易
以下是文档的一些相关链接:
UINavigationController Class Reference