JS 與 OC 互動的三種方法

weixin_33670713發表於2016-07-13

第一種:使用JavaScriptCore.framework框架,JS給OC傳值。

OC裡要實現的程式碼:

在webViewDidFinishLoad:方法裡編寫如下程式碼:

2411244-443bc37e7081a22c.png

其中:passValue 是自定義的一個函式名,要和JS程式碼裡傳值的函式名一致,得到的arg陣列裡面為JS那邊傳過來的引數。

JS裡要實現的程式碼:(很簡單)

2411244-e37027ad4b088a16.png

在需要給OC傳值的函式裡(例如:testClick())直接呼叫 passValue()函式,將值傳進去即可。


第二種:使用自定義url方法,JS給OC傳值。

JS裡要實現的程式碼:

2411244-6bef963c62812378.png

在需要給OC傳值的函式裡(例如:testClick())寫如上格式的程式碼。

其中 objc 是自定義的協議頭,cmd為自定義的函式名稱(我認為沒什麼用),hello和world為傳給OC的兩個值。

OC裡要實現的程式碼:

2411244-5ff7269e4230d149.png

第三種:使用WebViewJavascriptBridge三方庫實現JS與OC的相互傳值。

JS裡需要實現的程式碼:

2411244-10556d42ca666488.png

按鈕點選事件程式碼:    點選網頁上的按鈕向OC傳過去一個字典{'foo':'bar'},同時接收到OC傳過來的一個值response。 

bridge.registerHandler 程式碼:  OC向JS傳值時呼叫。

OC裡需要實現的程式碼:

2411244-e54f939e8e6dfe1c.png

註釋裡寫的很清楚,這裡就不在贅述。

需要注意的是:不論哪方給哪方傳值,傳值的方法名稱與對應接收值的方法名稱要保持一致。

相關文章