从 JavaScript 调用 Swift
Posted
技术标签:
【中文标题】从 JavaScript 调用 Swift【英文标题】:Calling Swift from JavaScript 【发布时间】:2014-12-05 14:22:34 【问题描述】:我是 Swift/ios 新手,一直在开发一个 代码的应用程序。在线教程并不多,其中很多都是 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
上,它说
类型“ViewController”不符合协议“WKScriptMessageHandler”。
任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:我注意到你的方法userContentController
是:
func userContentController(userContentController: WKUserContentController!,
didReceiveScriptMessage message: WKScriptMessage!)
应该是:
func userContentController(userContentController: WKUserContentController,
didReceiveScriptMessage message: WKScriptMessage)
(原型中没有选项!)。
如果您需要更多帮助,请发布您的index.html
源文件
【讨论】:
这么简单的事情非常感谢!!你也有教程的链接,展示了一些关于 javascript 到 swift 的好例子吗? 你检查过这个tetontech.wordpress.com/2014/06/13/…吗?以上是关于从 JavaScript 调用 Swift的主要内容,如果未能解决你的问题,请参考以下文章