0

我有一个带有分段控制的视图控制器 A,我在控制器 A 中添加了两个视图控制器的(B 和 C)视图,用于不同的段选择。我在控制器 B 和控制器 C 上各有一个按钮。在每个控制器 B 和控制器 C 的按钮单击时,我是去控制器D.

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

我已经尝试了下面的代码,但我认为由于控制器(B&C)的视图添加到控制器A,它给了我零。

guard let parent = self.parent else {return}

在这种情况下如何获得父母?

4

1 回答 1

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
        }
    }
    

然后,您可以使用 sender 的值根据发件人做任何您想做的事情。这里的好处是,如果您继续导航,您始终可以将 sender 值传播到下一个 ViewController。

于 2018-07-19T10:03:57.793 回答