2012-02-01 9 views
6

Mam prostą funkcję javascript, która pobiera dwie zmienne. Muszę przekazać dwie zmienne, które już mam w mojej aplikacji Objective-C (iOS) do tej funkcji javascript. Mój wiersz kodu, aby uruchomić JavaScript jest:Przekazywanie zmiennych z Objective-C do funkcji javascript?

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

Funkcja javascript tylko stosuje dwie zmienne w postaci HTML i przedkłada go. Oczywiście w mojej postaci nie mam do czynienia z definicją, ponieważ brakuje zmiennych. 8-) Nie mogłem znaleźć wiele dokumentacji na ten temat, ale może szukam w niewłaściwych miejscach?

FWIW, moje zmienne C-Objective są ciągami. Moja funkcja JavaScript jest onscan(a,b)

UPDATE:

udało mi się uzyskać tej pracy poprzez umieszczenie apostrofów wokół każdej ze zmiennych są przekazywane do funkcji JavaScript. Zaktualizowany kod jest:

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

Odpowiedz

9

stringByEvaluatingJavaScriptFromString: trwa NSString więc wszystko co musisz zrobić, to połączyć ciągi przy użyciu stringWithFormat: i formatowania %@ obiektu jak poniżej:

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

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

[webView stringByEvaluatingJavaScriptFromString:javascriptString]; 

Odjazd dokumentacji Apple na NSString, to szalenie użyteczny przedmiot!

+0

Dzięki, już wypróbowałem to i nie mogłem dostać niczego, co mógłbym przekazać na mój UIWebView. Odsyłam kod (tak jak powyżej) i umieściłeś ciąg znaków w NSLog, aby upewnić się, że rzeczy są koszerne, ale z jakiegoś powodu funkcja javascript nie używa tych zmiennych przekazywanych do niej przy użyciu tej metody. Dziwne, że otrzymuję niezdefiniowaną wartość w polu wartości tekstowej, gdy nie umieszczam żadnych zmiennych w ciągu znaków. –

+1

Udało mi się rozwiązać ten problem, zawijając zmienne, aby przejść do funkcji w pojedynczych cudzysłowach. Zaktualizowałem moje pytanie z odpowiedzią. –

+0

Ups, dzięki za złapanie tego, również zaktualizowałem swoją odpowiedź. Ciągle mnie dręczyło to uczucie, że coś zapomniałem ... –

Powiązane problemy