我有一个带有分段控制的视图控制器 A,我在控制器 A 中添加了两个视图控制器的(B 和 C)视图,用于不同的段选择。我在控制器 B 和控制器 C 上各有一个按钮。在每个控制器 B 和控制器 C 的按钮单击时,我是去控制器D.
我怎么知道我来自哪个控制器?
我已经尝试了下面的代码,但我认为由于控制器(B&C)的视图添加到控制器A,它给了我零。
guard let parent = self.parent else {return}
在这种情况下如何获得父母?
我有一个带有分段控制的视图控制器 A,我在控制器 A 中添加了两个视图控制器的(B 和 C)视图,用于不同的段选择。我在控制器 B 和控制器 C 上各有一个按钮。在每个控制器 B 和控制器 C 的按钮单击时,我是去控制器D.
我怎么知道我来自哪个控制器?
我已经尝试了下面的代码,但我认为由于控制器(B&C)的视图添加到控制器A,它给了我零。
guard let parent = self.parent else {return}
在这种情况下如何获得父母?
我曾经使用过的稍微不同的解决方案:
用发送者 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。