尝试根据我使用prepareforsegue点击的按钮来隐藏视图

时间:2015-09-18 20:47:53

标签: ios xcode swift uiview

在我的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

}

然后我会收到一个错误: enter image description here

1 个答案:

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

但这是糟糕的代码设计......