从父控制器中访问容器视图控制器 Swift 2

标签: ios Swift
发布时间: 2017/3/6 22:55:04
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我要从父视图控制器访问标签的容器视图控制器。我有尝试以下操作︰

prepareForSegue 是在父视图控制器的功能。 ViewController2 是容器视图控制器。 parin2 是在容器的视图控制器标签的名称。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!)
{
    let vc1 = segue.destinationViewController as! ViewController2;
    vc1.parin2.text=String("helo");
}

这给出了以下错误︰

fatal error: unexpectedly found nil while unwrapping an Optional value

解决方法 1:

你没说究竟条线导致的错误,但我的猜测是,它是 let vc1 = segue.destinationViewController as! ViewController2 (顺便说一句,请省略 ';'在 s Swift )。as!似乎会失败,因为目标视图控制器不是 ViewController2 。要验证这一点,在那条线上设置一个断点,然后检查界限的 destinationViewController 属性,以查看它是什么样的视图控制器。如果它已 ViewController2 ,那么问题就是你的storyboard中。你要么得到界限,你没想到,或目的地的storyboard中的类不是 ViewController2

一个更好的处理模式 prepareForSegue 如下︰

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
    // ALWAYS check the segue identifier first! If you forgot to put one on
    // your segue in the storyboard, then you should see a compiler warning.
    switch segue.identifier {
    case "SegueToViewController2":
        guard let destination = segue.destinationViewController as? ViewController2 else {
            // handle the error somehow
            return
        }
    default:
        // What happens when the segue's identifier doesn't match any of the
        // ones that you expected?
    }
}
官方微信
官方QQ群
31647020