如何获得子视图控制器的父项?

时间:2018-07-19 07:28:38

标签: ios swift uiviewcontroller parentviewcontroller

我有一个具有分段控制的视图控制器A,并且在不同的段选择上在controllerA中添加了两个视图控制器(B&C)视图。我在controllerB和controllerC上各有一个按钮。在每个控制器B和controllerC上单击按钮时,我要去controllerD。

我怎么知道我来自哪个控制器?

我在下面尝试过代码,但是我认为由于添加到controllerA的控制器(B&C)的视图,这给了我零的麻烦。

guard let parent = self.parent else {return}

在这种情况下如何生父母?

1 个答案:

答案 0 :(得分:1)

我曾经使用过一种略有不同的解决方案:

  • 声明与发件人A,B,C等的枚举。

    enum Sender {
        case A
        case B
        case C
    }
    
  • 在D中放置一个名为sender的变量。

     var sender : Sender!
    
  • 在初始化VC集时,它是各自的发送者。如果您使用segue,请准备segue以设置值。

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    
        if segue.identifier == "D" {
            let vc = segue.destination as! D
            vc.sender = B or C //As required
        }
    }
    

然后,您可以使用发件人的值根据发件人执行所需的任何操作。这里的好处是,如果您继续导航,则始终可以将发件人值传播到下一个ViewController。