2
我是Swift/iOS的新手,一直致力于从JavaScript调用Swift代码的应用程序。网上没有太多的教程,其中很多来自Swift仍处于测试阶段时。无论如何,我的代码出现错误,我无法编译它,我想知道是否有任何人在JavaScript中调用swift代码时有任何提示和最佳实践。从JavaScript调用Swift
这里是我的代码
import UIKit
import WebKit
class ViewController: UIViewController, WKScriptMessageHandler {
@IBOutlet var containerView : UIView! = nil
var webView: WKWebView?
override func loadView() {
super.loadView()
var contentController = WKUserContentController();
var userScript = WKUserScript(
source: "redHeader()",
injectionTime: WKUserScriptInjectionTime.AtDocumentEnd,
forMainFrameOnly: true
)
contentController.addUserScript(userScript)
contentController.addScriptMessageHandler(
self,
name: "callbackHandler"
)
var config = WKWebViewConfiguration()
config.userContentController = contentController
self.webView = WKWebView(frame: self.view.frame, configuration: config)
self.view = self.webView!
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
var url = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("index", ofType: "html")!)
var req = NSURLRequest(URL: url!)
self.webView!.loadRequest(req)
}
func userContentController(userContentController: WKUserContentController!,didReceiveScriptMessage message: WKScriptMessage!) {
if(message.name == "callbackHandler") {
println("JavaScript is sending a message \(message.body)")
} }
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
错误是class ViewController: UIViewController, WKScriptMessageHandler {
它说
类型 '视图控制器' 不符合协议 'WKScriptMessageHandler'。
任何帮助将不胜感激。
这么简单的东西太感谢你了!你也有链接到教程显示一些很好的例子在JavaScript到SWIFT? – 2014-12-05 15:06:54
您是否检查过http://tetontech.wordpress.com/2014/06/13/swift-wkwebview-and-calling-from-javascript-to-swift/? – valfer 2014-12-05 15:20:15