将viewcontroller从另一个导航Controller弹出到另一个viewcontroller

时间:2018-11-16 15:49:14

标签: ios swift uiviewcontroller

NC / VC1-模态存在-NC2 / VC2(嵌入)-将VC3弹出到VC1

我正在尝试将当前视图控制器从另一个导航控制器弹出到第一个视图控制器。

我找不到办法。有人知道如何实现吗?

2 个答案:

答案 0 :(得分:1)

enter image description here

VC1类中的第一个声明此方法

class VC1: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }

    @IBAction func unwindtoVC1(segue: UIStoryboardSegue) {

    }

}

然后查看“图像”以创建展开的片段

之后,在您的VC3类中

class VC3: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }


    @IBAction func didCloseTap(_ sender: Any) {
        self.performSegue(withIdentifier: "segueToVC1", sender: nil)

    }

}

答案 1 :(得分:0)

我们需要有关View Controllers层次结构以及如何精确完成导航的更多详细信息。

请注意,除非另一个视图控制器(您要在弹出当前视图控制器后显示)不在层次结构上,否则会出现问题。

我建议使用Coordinator对象(它不是视图控制器,是从NSObject继承的)。使它成为决定弹出哪个视图控制器以及接下来显示什么的控件。

协调器需要引用App Delegate的window属性,以便根据需要设置其rootViewController属性。所有视图控制器还必须委派给协调器,以通知其有关关闭/添加/保存事件等的信息。

观看此演示文稿https://vimeo.com/144116310,请注意,这是比Apple文档中更高级的模式。这个想法是,视图控制器根本不应该提供其他视图控制器或根本不知道其他视图控制器的存在...除非它是容器视图控制器,例如UINavigationController,UITabBarController,这些容器的子类或自定义子类。