pushViewController没有navigationcontroller

时间:2011-08-10 16:11:51

标签: ios uinavigationcontroller uitableview

我有一个类型UITableViewController的类。 这个类有一个UINavigationBar类型的成员,我用它来添加表视图的编辑按钮。

使用此方法调用无效。

[self.navigationController pushViewController:controller];

如何选择表格行而不将UITableViewController包裹在UINavigationController中,将详细视图推送到视图上?

5 个答案:

答案 0 :(得分:38)

如果您不想使用导航控制器,最接近的选择是模态视图控制器。

[self presentViewController:controller animated:YES completion:nil];

这会将控制器从底部滑入屏幕,或者如果您更改控制器的modalTransitionStyle,它可以翻转或淡入。

要解除控制器,只需致电:

[self dismissViewControllerAnimated:YES completion:nil];

答案 1 :(得分:14)

还可以像往常一样使用导航控制器然后隐藏它。

要使用故事板隐藏导航控制器:选择它并取消选中属性检查器中的“显示导航栏”。其他人可能会建议隐藏每个控制器中的导航栏,但问题是它会出现一毫秒然后消失。

Navigation Controller attributes tab

答案 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

Customizing the Transition Animations

Presenting a Modal View Controller