从另一个VC打开一个VC而不将它们推送到导航堆栈(Swift)

时间:2015-07-28 06:18:41

标签: ios swift viewcontroller

我有两个VC(MapController和ObjectListController)。 我把它们放到导航控制器(我需要导航栏,按钮在它们之间切换,看起来像图片)。

enter image description here

但是当我点击NavButton时,我切换到了ObjectList,但出现了我不需要的BackButton项目。 ObjectListController具有相同的按钮以切换到MapController。

如何通过正确的方式在两个VC之间进行此类行为:从一个切换到另一个而不将其推送到导航堆栈?

现在按钮和VC使用自定义segue连接,没有任何代码。

PS:如果我删除导航控制器包装器,我看不到导航栏放置按钮进行切换。

2 个答案:

答案 0 :(得分:0)

您仍然可以使用导航控制器正常按下/弹出,只需隐藏默认提供的后退按钮:

要执行此操作,请在ObjectListController中设置属性hidesBackButton

override func viewDidLoad() {
    super.viewDidLoad()

    self.navigationItem.hidesBackButton = true

    // ...
}

答案 1 :(得分:0)

要选择更好的方法,您需要知道ObjectListController将执行的操作。对于简单的显示视图控制器,您可以推送/显示它并自定义您自己的导航栏。后退按钮实际上是UIBarButtonItem,可以创建和自定义。强烈推荐这个。顺便说一句,你甚至可以隐藏系统导航栏并使用UIView来模拟它..

如果这两个控制器之间存在复杂的交互,您可以尝试使用标签栏控制器并隐藏标签栏。让按钮选择器方法执行切换选项卡操作。

如果ObjectListController足够简单,你甚至可以使用当前视图控制器的UIView?属性来替换你的ObjectListController。