Ios Nib/Xib对象生命周期
现在我有一个rootViewController,它通过以下方式调用另一个作为nib文件的ViewController: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
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“对于第二个问题”,你应该提出第二个问题。尽管丹回答了,上面。