没有导航控制器的pushViewController

16

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

使用此方法调用是无效的。

[self.navigationController pushViewController:controller];

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

5个回答

38

如果您不想使用导航控制器,则最接近的替代方案是模态视图控制器。

[self presentViewController:controller animated:YES completion:nil];
这将从屏幕底部滑入控制器,或者如果您更改控制器的modalTransitionStyle,它可以翻转或淡入淡出。要关闭控制器,请调用:
```swift dismiss(animated: true, completion: nil) ```
[self dismissViewControllerAnimated:YES completion:nil];

16

我会将UITableView放在UINavigationController中,并仅隐藏UINavigationBar。

[self.navigationController setNavigationBarHidden:YES animated:NO];

然后创建一个返回按钮,使得视图控制器从堆栈中弹出。

[self.navigationController popViewControllerAnimated:YES]

15

可以像往常一样使用导航控制器,然后将其隐藏。

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

Navigation Controller attributes tab


6

如果没有导航控制器,您将无法将视图控制器推入导航控制器。如果您想要推送控制器并显示最顶层的控制器和所有内容,请使用UINavigationController。

您可以将任意的UINavigationItem推入您的UINavigationBar,并且当用户使用后退按钮时,您的栏的代理将被通知,以便您可以采取适当的操作。有关更多信息,请参见文档


1

没有UINavigationController,你就不能推出视图控制器。相反,你可以通过UIViewController.present(_ viewControllerToPresent:, animated:, completion:)以模态方式呈现视图控制器。

但是,你可以创建自定义的segue来显示视图控制器,就像推出视图控制器一样(或者使用任何其他你想要的动画),尽管使用UINavigationController似乎更容易。

以下是一些相关文档链接:

UINavigationController类参考

自定义转场动画

呈现模态视图控制器


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接