Xcode 为什么WebFrameLoadDelegate被认为是未声明的?
我有一个基本的Cocoa应用程序,它的窗口中只有一个Xcode 为什么WebFrameLoadDelegate被认为是未声明的?,xcode,macos,webview,swift,webkit,Xcode,Macos,Webview,Swift,Webkit,我有一个基本的Cocoa应用程序,它的窗口中只有一个WebView。WebKit.framework参考添加到OSX10.9(Mavericks)上的Xcode6 beta 6项目中。我想知道WebView何时完成加载页面。因此,我创建了一个WebViewControllerDelegate类继承WebFrameLoadDelegate。这已经是问题开始的地方:Xcode告诉我如何使用未声明的类型“WebFrameLoadDelegate”。与此相关,它不应该。如前所述,项目引用了WebKit.
WebView
。WebKit.framework
参考添加到OSX10.9(Mavericks)上的Xcode6 beta 6项目中。我想知道WebView
何时完成加载页面。因此,我创建了一个WebViewControllerDelegate
类继承WebFrameLoadDelegate
。这已经是问题开始的地方:Xcode告诉我如何使用未声明的类型“WebFrameLoadDelegate”。与此相关,它不应该。如前所述,项目引用了WebKit.framework
,并在Swift类文件中导入了WebKit
模块。我还在Xcode左侧栏的“Headers”文件夹中看到WebFrameLoadDelegate.h
,在WebKit.framework
下面
万恶之源是文件TestWebView/WebViewControllerDelegate.swift中的行11
(我忘了删除这里省略的注释)、类声明和协议引用
import WebKit
class WebViewControllerDelegate: WebFrameLoadDelegate {
func didFinishLoadForFrame() {
NSLog("didFinishLoadForFrame()")
}
}
AppDelegate
,用于设置所有内容:
import Cocoa
import WebKit
class AppDelegate: NSObject, NSApplicationDelegate {
@IBOutlet weak var window: NSWindow!
@IBOutlet weak var webView: WebView!
@IBOutlet weak var webViewControllerDelegate: WebViewControllerDelegate!
func applicationDidFinishLaunching(aNotification: NSNotification?) {
self.webView.frameLoadDelegate = self.webViewControllerDelegate
self.webView.mainFrame.loadRequest(NSURLRequest(URL: NSURL(string: "https://stackoverflow.com/")))
}
func applicationWillTerminate(aNotification: NSNotification?) {}
}
有关更多信息,请查看我为这个问题创建的my中的代码。WebFrameLoadDelegate
是一个非正式协议,因此您不能声明它的一致性。只需从NSObject
继承并实现所需的方法
另外,请注意Swift方法的名称是webView(发送方:webView!,didFinishLoadForFrame:WebFrame!)
,而不仅仅是didFinishLoadForFrame()
我相应地更新了我的存储库中的代码,以便其他具有相同或类似问题的人看到一个工作示例。
class WebViewControllerDelegate: NSObject { // WebFrameLoadDelegate
override func webView(sender: WebView!, didFinishLoadForFrame frame: WebFrame!) {
NSLog("didFinishLoadForFrame()")
}
}