在我的FirstViewController中,我有两个名为(button1和button2)的按钮。
在我的SecondViewController中,我有两个名为(visible1和visible2)的视图。
当我按下button1时,我将切换到SecondViewController和两者 视图应该是可见的。
当我按下button2时,只能看到View(visible2)。
我试过了:
if (segue.identifier == "segueTest2") {
let svc = segue.destinationViewController as! SecondViewController
svc.visible1.hidden = true
}
答案 0 :(得分:1)
调用prepareForSegue
时,destinationViewController.view
尚未加载(并且插座也未连接)。所以此时visible1
为零。
IMO最佳选择是在第二个视图控制器上创建一个变量mode
,它可以从枚举.AllVisible / .OnlySecondVisible中获取值。在prepareForSegue中你设置了svc.mode = .OnlySecondVisible
。在SecondViewController.viewDidLoad中,您可以根据选定的mode
配置UI。因此,首先查看控制器不直接编辑第二视图控制器UI。弱耦合是好的。
另一种(更简单的)解决方法是写:
if (segue.identifier == "segueTest2") {
let svc = segue.destinationViewController as! SecondViewControlle
let _ = svc.view // trigger viewDidLoad
svc.visible1.hidden = true
}
但这是糟糕的代码设计......