Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Nib/Xib对象生命周期_Ios_Cocoa Touch - Fatal编程技术网

Ios Nib/Xib对象生命周期

Ios Nib/Xib对象生命周期,ios,cocoa-touch,Ios,Cocoa Touch,现在我有一个rootViewController,它通过以下方式调用另一个作为nib文件的ViewController: self.popViewController = PopViewController(nibName: "PopUpViewController_iPhone6Plus", bundle: bundle) 其中,该初始值为: override public init(nibName nibNameOrNil: String!, bundle nibBu

现在我有一个rootViewController,它通过以下方式调用另一个作为nib文件的ViewController:

self.popViewController = PopViewController(nibName: "PopUpViewController_iPhone6Plus", bundle: bundle)
其中,该初始值为:

 override public init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!) {
    super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}
rootViewController实例化PopViewController后,通过以下方式将其打开:

self.popViewController.showInView(self, animated: true)
其中showInView是:

 func showInView(myRootViewController : MyRootViewController!, animated: Bool)
{
    self.myRootViewController = myRootViewController
    myRootViewController.view.addSubview(self.view)
    myTextField.delegate = self
    
    if animated
    {
        self.showAnimate()
    }
}
其中myTextField是PopViewController的IBOutlet。我意识到,如果我将
myTextField.delegate=self
放在
myRootViewController.view.addSubview(self.view)
之前,那么我会得到一个错误:
致命错误:在展开可选值时意外地发现nil
,但如果我放在后面,一切都很好

我已经看过了本次会议的文件,我的问题是:

当我将
myTextField.delegate=self
放在
myRootViewController.view.addSubview(self.view)
之前时出错的原因是因为在显示nib的视图之前IBoutlet没有连接

此外: 为什么通过以下方式加载nib:
self.popViewController=NSBundle.mainBundle().loadNibNamed(“popViewController_iPhone6”,所有者:PopViewControllerSwift.self,选项:nil)。第一个为!PopViewControllerSwift

抛出一个错误:


'NSUnknownKeyException',原因:'[setValue:forUndefinedKey:
使用NIB初始化视图控制器不会立即加载它。在查询视图控制器的
视图之前,不会实际加载NIB

发件人:

您指定的nib文件未立即加载。它在第一次访问视图控制器的视图时加载。如果要在加载nib文件后执行其他初始化,请覆盖
viewDidLoad
方法并在那里执行任务


当然,NIB中设置的出口连接在NIB加载之前无法连接。因此,在您查询
视图之前,您的出口是

,但是对于第二个问题,即使我在访问视图后设置textField委托,它仍然会抛出键值错误您发送给
所有者的对象是它试图连接IBOutlets的对象。您发送的是实际的类,而不是该类的一个实例,该实例不是任何outlets@YellowPillow“对于第二个问题”,你应该提出第二个问题。尽管丹回答了,上面。