我有一个类型为UITableViewController
的类。
这个类拥有一个类型为UINavigationBar
的成员,我用它来为表视图添加编辑按钮。
使用此方法调用是无效的。
[self.navigationController pushViewController:controller];
如何在选择表格行后将详细视图推送到视图,而不必将 UITableViewController
包装在 UINavigationController
中?
我有一个类型为UITableViewController
的类。
这个类拥有一个类型为UINavigationBar
的成员,我用它来为表视图添加编辑按钮。
使用此方法调用是无效的。
[self.navigationController pushViewController:controller];
如何在选择表格行后将详细视图推送到视图,而不必将 UITableViewController
包装在 UINavigationController
中?
如果您不想使用导航控制器,则最接近的替代方案是模态视图控制器。
[self presentViewController:controller animated:YES completion:nil];
这将从屏幕底部滑入控制器,或者如果您更改控制器的modalTransitionStyle
,它可以翻转或淡入淡出。要关闭控制器,请调用:[self dismissViewControllerAnimated:YES completion:nil];
我会将UITableView放在UINavigationController中,并仅隐藏UINavigationBar。
[self.navigationController setNavigationBarHidden:YES animated:NO];
然后创建一个返回按钮,使得视图控制器从堆栈中弹出。
[self.navigationController popViewControllerAnimated:YES]
可以像往常一样使用导航控制器,然后将其隐藏。
使用storyboard来隐藏导航控制器: 选中它并在属性检查器中取消勾选“显示导航栏”。其他人可能建议在每个控制器中隐藏导航栏,但问题是它会出现一毫秒然后消失。
如果没有导航控制器,您将无法将视图控制器推入导航控制器。如果您想要推送控制器并显示最顶层的控制器和所有内容,请使用UINavigationController。
您可以将任意的UINavigationItem推入您的UINavigationBar,并且当用户使用后退按钮时,您的栏的代理将被通知,以便您可以采取适当的操作。有关更多信息,请参见文档。
没有UINavigationController
,你就不能推出视图控制器。相反,你可以通过UIViewController.present(_ viewControllerToPresent:, animated:, completion:)
以模态方式呈现视图控制器。
但是,你可以创建自定义的segue来显示视图控制器,就像推出视图控制器一样(或者使用任何其他你想要的动画),尽管使用UINavigationController
似乎更容易。
以下是一些相关文档链接: