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