2012-02-01 39 views
6

Tôi có một hàm javascript đơn giản có hai biến. Tôi cần phải vượt qua hai biến mà tôi đã có trong ứng dụng Objective-C (iOS) của tôi cho hàm javascript này. Dòng mã của tôi để chạy javascript là:Chuyển các biến từ Objective-C sang hàm javascript?

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

Hàm javascript chỉ áp dụng hai biến cho biểu mẫu HTML và gửi nó. Tôi tất nhiên nhận được không xác định trong hình thức của tôi kể từ khi các biến mất tích. 8-) Tôi đã không thể tìm thấy nhiều tài liệu về điều này, nhưng có lẽ tôi đang tìm kiếm ở những nơi sai?

FWIW, biến Mục tiêu-C của tôi là chuỗi. chức năng javascript của tôi là onscan(a,b)

UPDATE:

tôi đã có thể làm việc này bằng cách đặt dấu nháy đơn xung quanh mỗi người trong số các biến được truyền cho hàm javascript. Các mã được cập nhật là:

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

Trả lời

9

stringByEvaluatingJavaScriptFromString: mất một NSString vì vậy tất cả bạn phải làm là kết hợp dây sử dụng stringWithFormat: và formatter %@ đối tượng như dưới đây:

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

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

[webView stringByEvaluatingJavaScriptFromString:javascriptString]; 

Kiểm tra tài liệu của Apple cho NSString, đó là một đối tượng cực kỳ hữu ích!

+0

Cảm ơn, tôi đã thử điều đó và tôi không thể nhận được bất kỳ thứ gì để chuyển đến UIWebView của mình. Tôi đặt mã trở lại (như bạn đã có ở trên) và đặt chuỗi vào NSLog để đảm bảo mọi thứ được kosher, nhưng vì lý do nào đó hàm javascript không sử dụng các biến đó được truyền cho nó bằng phương thức này. Thật lạ khi tôi nhận được một undefined trong hộp văn bản giá trị biểu mẫu khi tôi không đặt bất kỳ biến nào trong chuỗi. –

+1

Tôi đã có thể giải quyết điều này bằng cách gói các biến để chuyển đến hàm trong các dấu nháy đơn. Tôi đã cập nhật câu hỏi của mình với câu trả lời. –

+0

Rất tiếc cảm ơn vì đã bắt được điều đó, tôi cũng đã cập nhật câu trả lời của mình. Tôi tiếp tục bị làm phiền bởi cảm giác này rằng tôi đã quên mất một cái gì đó ... –

Các vấn đề liên quan