2012-02-01 51 views
6

我有一個簡單的JavaScript函數,它需要兩個變量。我需要將我已經在Objective-C(iOS)應用程序中使用的兩個變量傳遞給此javascript函數。我的代碼行運行JavaScript是:將變量從Objective-C傳遞給javascript函數?

[webView stringByEvaluatingJavaScriptFromString:@"onScan()"]; 

JavaScript函數只是兩個變量適用於HTML表單並提交。因爲變量缺失,我當然會在表單中得到未定義的值。 8-)我一直無法找到這方面的文檔,但也許我找錯了地方?

FWIW,我的Objective-C變量是字符串。我的javascript函數是onscan(a,b)

UPDATE:

我能夠通過周圍放置每個變量的單引號得到這個工作被傳遞給JavaScript函數。更新後的代碼是:

[webView stringByEvaluatingJavaScriptFromString:@"onScan('%@','%@')",a,b]; 

回答

9

stringByEvaluatingJavaScriptFromString:需要一個NSString因此,所有你需要做的就是結合使用stringWithFormat:%@對象格式類似下面的字符串:

NSString *stringOne = @"first_parameter"; 
NSString *stringTwo = @"second_parameter"; 

NSString *javascriptString = [NSString stringWithFormat:@"onScan('%@','%@')", stringOne, stringTwo]; 

[webView stringByEvaluatingJavaScriptFromString:javascriptString]; 

退房蘋果的文檔NSString,它的一個瘋狂有用的對象!

+0

謝謝,我已經試過了,我無法得到任何東西傳遞給我的UIWebView。我把代碼放回來了(就像你上面那樣),並將字符串放到NSLog中,以確保事情是潔淨的,但由於某種原因,javascript函數沒有使用使用此方法傳遞給它的那些變量。奇怪的是,當我沒有在字符串中放置任何變量時,我在表單文本框中得到了一個未定義的值。 – 2012-02-01 18:17:11

+1

我能夠通過將變量傳遞給單引號中的函數來解決此問題。我已經用答案更新了我的問題。 – 2012-02-01 18:26:19

+0

哎呦感謝您的支持,我也更新了我的答案。我一直被這種感覺所迷惑,我忘記了一些東西...... – 2012-02-01 18:29:46