我有两个VC(MapController和ObjectListController)。 我把它们放到导航控制器(我需要导航栏,按钮在它们之间切换,看起来像图片)。
但是当我点击NavButton时,我切换到了ObjectList,但出现了我不需要的BackButton项目。 ObjectListController具有相同的按钮以切换到MapController。
如何通过正确的方式在两个VC之间进行此类行为:从一个切换到另一个而不将其推送到导航堆栈?
现在按钮和VC使用自定义segue连接,没有任何代码。
PS:如果我删除导航控制器包装器,我看不到导航栏放置按钮进行切换。
答案 0 :(得分:0)
您仍然可以使用导航控制器正常按下/弹出,只需隐藏默认提供的后退按钮:
要执行此操作,请在ObjectListController中设置属性hidesBackButton
:
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.hidesBackButton = true
// ...
}
答案 1 :(得分:0)
要选择更好的方法,您需要知道ObjectListController将执行的操作。对于简单的显示视图控制器,您可以推送/显示它并自定义您自己的导航栏。后退按钮实际上是UIBarButtonItem
,可以创建和自定义。强烈推荐这个。顺便说一句,你甚至可以隐藏系统导航栏并使用UIView来模拟它..
如果这两个控制器之间存在复杂的交互,您可以尝试使用标签栏控制器并隐藏标签栏。让按钮选择器方法执行切换选项卡操作。
如果ObjectListController足够简单,你甚至可以使用当前视图控制器的UIView?
属性来替换你的ObjectListController。