Xcode 代理中的webview强iboutlet为零,从未调用过awakefromnib

Xcode 代理中的webview强iboutlet为零,从未调用过awakefromnib,xcode,swift,macos,swift2,Xcode,Swift,Macos,Swift2,目前正在将obj-c框架转换为swift。 在我的委托中,我有一个类具有指向webview的iboutlet(我将其定义为strong),但当我尝试使用设置url时(第一个块来自PhWebViewController): 我的osx应用程序崩溃,xcode告诉我它在打开optionnal时发现了nil。 我和他的问题一样: 除了对我来说,iboutlet与strong属性连接。 我做了一些检查,webViewController属性不是nil,但webView是。 我认为xib文件可能已损坏,

目前正在将obj-c框架转换为swift。 在我的委托中,我有一个类具有指向webview的iboutlet(我将其定义为strong),但当我尝试使用设置url时(第一个块来自PhWebViewController):

我的osx应用程序崩溃,xcode告诉我它在打开optionnal时发现了nil。 我和他的问题一样:

除了对我来说,iboutlet与strong属性连接。 我做了一些检查,webViewController属性不是nil,但webView是。 我认为xib文件可能已损坏,所以我创建了另一个文件,再次制作了Outlet,但没有任何更改


以前有人遇到过同样的问题吗?

对于那些对答案感兴趣的人,为了正确加载xib文件,我使用了:

 NSBundle.mainBundle().loadNibNamed("FacebookLogin", owner: self.webViewController, topLevelObjects: nil)

您正在将
PhWebViewController
的新实例分配给
webViewController
。如果您正在引用
PhWebViewController
IBOutlet
,那么它将崩溃,因为该outlet为nil(如错误所示)。这是因为视图尚未加载。另外,您可能希望
webViewController
weak
以防止强引用循环。因此,PhWebViewController中的awakefromnib方法不会被调用。这很奇怪,因为我没有偏离原来的框架,代码中也没有调用该方法,而且它可以工作。我没有使用
awakeFromNib()
的经验,但我知道当您尝试访问
.webView
时,视图还没有加载。如果
webViewController
用作委托方法,则应在创建此视图时设置委托,或者可以尝试“查找”
PhWebViewController
的实例。
 NSBundle.mainBundle().loadNibNamed("FacebookLogin", owner: self.webViewController, topLevelObjects: nil)