2010-09-18 7 views
13

मेरे पास NSString है और मेरे प्रोजेक्ट (आईफोन के लिए उद्देश्य-सी) में एक वेब व्यू है, मैंने वेब दृश्य में index.html कहा है और इसके अंदर मैंने अपनी स्क्रिप्ट (जावास्क्रिप्ट) डाली है।UIWebview में NSString

मैं अपनी स्क्रिप्ट और उपाध्यक्ष में एक var के रूप में एनएसएसटींग को कैसे पास कर सकता हूं?

यह example है, लेकिन मुझे यह बहुत अच्छी तरह से समझ में नहीं आता है। वेब दृश्य को

+0

मैंने यूआईवेब व्यू और UIWebViewDelegate टैग (xcode और html के बजाय) –

उत्तर

30

संदेश स्ट्रिंग:

घोषणा करते हैं कि आप UIWebViewDelegate प्रोटोकॉल लागू (ज फाइल के अंदर): वेब दृश्य से Obj सी को

[webView stringByEvaluatingJavaScriptFromString:@"YOUR_JS_CODE_GOES_HERE"]; 

संदेश स्ट्रिंग

@interface MyViewController : UIViewController <UIWebViewDelegate> { 

    // your class members 

} 

// declarations of your properties and methods 

@end 

ऑब्जेक्टिव-सी में (मीटर फाइल के अंदर):

// right after creating the web view 
webView.delegate = self; 

ऑब्जेक्टिव-सी (मीटर फाइल के अंदर) भी में:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { 
    NSString *url = [[request URL] absoluteString]; 

    static NSString *urlPrefix = @"myApp://"; 

    if ([url hasPrefix:urlPrefix]) { 
     NSString *paramsString = [url substringFromIndex:[urlPrefix length]]; 
     NSArray *paramsArray = [paramsString componentsSeparatedByString:@"&"]; 
     int paramsAmount = [paramsArray count]; 

     for (int i = 0; i < paramsAmount; i++) { 
      NSArray *keyValuePair = [[paramsArray objectAtIndex:i] componentsSeparatedByString:@"="]; 
      NSString *key = [keyValuePair objectAtIndex:0]; 
      NSString *value = nil; 
      if ([keyValuePair count] > 1) { 
       value = [keyValuePair objectAtIndex:1]; 
      } 

      if (key && [key length] > 0) { 
       if (value && [value length] > 0) { 
        if ([key isEqualToString:@"param"]) { 
         // Use the index... 
        } 
       } 
      } 
     } 

     return NO; 
    } 
    else { 
     return YES; 
    } 
} 

अंदर जे एस:

location.href = 'myApp://param=10'; 
+3

और दूसरी तरफ जोड़ा है? :-) – MJB

0

जब (एक जावास्क्रिप्ट स्ट्रिंग के रूप में उपयोग के लिए) एक UIWebView में एक NSString गुजर आपको न्यूलाइन से बचने के साथ-साथ सिंगल/डबल कोट्स से बचने की ज़रूरत है:

NSString *html = @"<div id='my-div'>Hello there</div>"; 

html = [html stringByReplacingOccurrencesOfString:@"\'" withString:@"\\\'"]; 
html = [html stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""]; 
html = [html stringByReplacingOccurrencesOfString:@"\n" withString:@"\\n"]; 
html = [html stringByReplacingOccurrencesOfString:@"\r" withString:@""]; 

NSString *javaScript = [NSString stringWithFormat:@"injectSomeHtml('%@');", html]; 
[_webView stringByEvaluatingJavaScriptFromString:javaScript]; 

आर सदा प्रक्रिया का वर्णन @ माइकल-केसलर