2012-02-01 53 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