我有一个具有分段控制的视图控制器A,并且在不同的段选择上在controllerA中添加了两个视图控制器(B&C)视图。我在controllerB和controllerC上各有一个按钮。在每个控制器B和controllerC上单击按钮时,我要去controllerD。
我怎么知道我来自哪个控制器?
我在下面尝试过代码,但是我认为由于添加到controllerA的控制器(B&C)的视图,这给了我零的麻烦。
guard let parent = self.parent else {return}
在这种情况下如何生父母?
答案 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。