UIView.addSubview()意外地发现没有

时间:2017-04-24 12:10:49

标签: ios swift

这是我的问题:

我在课堂上有一个功能。该课程有一个名为embeddedView的出口。在类中调用函数时,它可以访问该插座,但在其他地方调用时,它会失败。

func embedView(_ newView: UIViewController){
        self.navigationItem.title = selectedView
        self.navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: Style.sectionHeaderTitleColor]
        newView.view.frame = self.embeddedView.bounds
        self.embeddedView.addSubview((newView.view)!) //This is the line that fails from AppDelegate
        addChildViewController(newView)
        newView.didMove(toParentViewController: self)
 }

从类中调用时,该函数没有问题,但是当从AppDelegate调用时,它失败,错误为fatal error: unexpectedly found nil while unwrapping an Optional value,因为embeddedView被声明为!

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

您是否对self.embeddedView中的变量AppDelegate有强大的参考。通常,AppDelegate类中没有可用的UIView,因为它与任何UIView都没有关联。 AppDelegate是初始化所有其他UIView的起点。出现此错误的原因是您的视图self.embeddedView实际上nil位于AppDelegate,但是当您在UIViewController类中使用相同内容时,您可以使用该对象并且它可以正常工作。