IBOutlet等于零

我只是尝试将我的UIWebView与UIViewController连接,当我启动应用程序时,我得到的错误意味着UIWebView等于nil。 可能有什么问题?

此图片出错

如果你刚刚引用了AuthViewController() ,你会看到这种行为,但根本没有引用故事板。 那是因为当你只是创建一个AuthViewController的实例时,它无法知道故事板中与该类相关联的场景。 因此,所有IBOutlet引用都将nil

相反,如果您以编程方式转换到此场景,则可以使用其“故事板ID”实例化视图控制器:

  1. 在Interface Builder的右侧面板的“Identity Inspector”中指定视图控制器场景的故事板ID:

    在此处输入图像描述

  2. 一旦你这样做,而不是做以下的事情,这将无效:

     let controller = AuthViewController() // now do something with `controller`, eg presentViewController(controller, animated: true, completion: nil) 

    您现在可以使用其故事板ID正确实例化此AuthViewController

     let controller = storyboard?.instantiateViewControllerWithIdentifier("AuthScene") presentViewController(controller!, animated: true, completion: nil) 

或者,如果你想在两个场景之间转换,我更喜欢使用故事板segues:

  1. 因此,通过控制 – 从原始场景上方的视图控制器图标拖拽到目标场景,在两个场景之间创建一个segue:

    在此处输入图像描述

    这会创建一个segue,它不会链接到任何按钮或类似的东西。 它只是直接在两个场景之间的一个segue,在你以编程方式执行之前不会被调用。

  2. 给那个segue自己的故事板ID:

    在此处输入图像描述

  3. 现在,您可以以编程方式执行该segue:

     performSegueWithIdentifier("TransitionToAuthScene", sender: self) 

后一种方法的优点是(a)故事板现在可视地表示您的应用程序的流程; (b)你可以使用放松细分等。

最后一点想法:

  • 如果您没有以编程方式过渡到此场景,另一种可能性是您没有在Interface Builder中连接IBOutlet 。 鉴于“Auth Web View”标签显示在文档大纲中,我认为您已成功连接IBOutlet ,但这是另一件需要检查的事情。 您可以通过选择Web视图,然后查看Interface Builder右侧的“Connections Inspector”面板来确认:

    在此处输入图像描述

  • 稍后您在评论中提到了在viewDidLoad执行此转换。 这总是从故事板转换到新场景的错误位置,因为您经常会在转换到相关场景的过程中,并且iOS会变得混乱。

    最好将这种代码推迟到viewDidAppear (或跳过“源”视图控制器并直接转换到此“auth”场景)。