为另一个VC设置一个VC的值时出错

时间:2017-06-11 15:29:29

标签: swift

我正在尝试在另一个视图控制器上设置UILabel的值。但是,当我尝试为其他视图控制器的UILabels等设置临时值时,我一直得到一个零值。这是执行segue的函数:

func swipe(Sender: UISwipeGestureRecognizer!) {
    print("swiped left")
    let vc = self.storyboard!.instantiateViewControllerWithIdentifier("OnDeck") as! OnDeck
    vc.firstBase = UIView(frame: CGRectMake(178, 136, 10, 10))
    vc.firstBase.backgroundColor = UIColor.redColor()
    vc.firstBase.layer.cornerRadius = vc.firstBase.frame.size.width/2

    self.presentViewController(vc, animated: true, completion: nil)
}

我在第vc.firstBase.backgroundColor = UIColor.redColor()

上收到以下错误
fatal error: unexpectedly found nil while unwrapping an Optional value

在尝试声明出口的临时值时,我有什么遗漏的东西吗?

1 个答案:

答案 0 :(得分:1)

您不应该设置这些相关的UI元素,因为UI尚未加载。而是传递一个值并将其设置在目标控制器的viewDidLoad

class OnDeck: UIViewController {

    var color = UIColor.white()
    override func viewDidLoad() {

        ...
        firstBase = color
    }

}

然后在您的swipe方法中,仅传递值,而不是修改已卸载的UILabelUIView。否则,将UI相关代码移动到目标viewDidLoad(),例如cornerRadius,帧大小等