2015-03-04 25 views
8

Ben bir Java arka plandan geliyorum beri bir Objective-C uzman değilim ve bu nedenle aşağıdaki kodu değiştirmek için biraz mücadele:Kullanımdan kaldırılan yöntemleri Objectuccess-C'ye nasıl SuccessCallbackString ve writeJavascript olarak değiştiririm?

- (void) loadHTML:(CDVInvokedUrlCommand*)command 
{ 

    NSString* callbackId = command.callbackId; 
    NSArray *arguments = command.arguments; 

    CDVPluginResult* pluginResult; 

    if (webView) 
    { 
     NSString *stringObtainedFromJavascript = [arguments objectAtIndex:0]; 
     [webView loadHTMLString:stringObtainedFromJavascript baseURL:baseURL]; 

     if (screenNeedsInit) { 
      [self makeScreenVisible]; 
     } 

     pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString: WEBVIEW_OK]; 
     [self writeJavascript: [pluginResult toSuccessCallbackString:callbackId]]; 
    } 
    else 
    { 
     pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString: WEBVIEW_UNAVAILABLE];   
     [self writeJavascript: [pluginResult toErrorCallbackString:callbackId]];  
    } 

} 

derleyici de o, writeJavascript yanı toErrorCallbackString olarak önerilmemektedir şikayet ve Bunları evalJS ve pluginResult ile değiştirmeliyim. Böyle

[self writeJavascript: [pluginResult toSuccessCallbackString:callbackId]]; 

:

Yani, benim ilk adım, bu hat değiştirmek oldu Yani

[self.commandDelegate evalJs: [pluginResult toSuccessCallbackString:callbackId]]; 

, bu çalıştı, ama yine de sendPluginResult ile toSuccessCallbackString değiştirmeniz gerekiyor, bu yüzden googled Bu kadar:

[self.commandDelegate sendPluginResult:pluginResult callbackId:callbackId]; 

Ama nasıl evalJS birleştirmek do şimdi sendPluginResult ile? Eski sürümde bana pluginResult toSuccessCallbackString sadece NSString* döndü, ancak şimdi sendPluginResult ile bir geri arama gibi görünüyor görünüyordu? sendPluginResult sonucunu evalJS'a iletmek için bunu nasıl yönetirim.

Not: Bunun için cordova API'sini kullanıyorum.

Lütfen nazik ol, çok fazla Objective-C yazmadım ve sözdizimiyle mücadele ediyorum.

cevap

11

bunu kullanın: Eğer o zaman hata geri aramasını

Kişisel javascript olmalıdır şey arayacak CDVCommandStatus_ERROR kullanılırsa

Eğer pluginResult üzerinde CDVCommandStatus_OK kullanılırsa
[self.commandDelegate sendPluginResult:pluginResult callbackId:callbackId]; 

, o zaman, başarı geri arama arayacak Bunun gibi:

cordova.exec(successCallback, errorCallback, "YourPluginName", "loadHTML",["yourHtmlString"]); 
+0

[self.commandDelegate evalJs: javascriptString] öğesini arayabileceğimiz geri arama yöntemi nedir; [PluginResult toErrorCallbackString: command.callbackId] 'yi [self.commandDelegate sendPluginResult: pluginResult callbackId: callbackId] olarak değiştirdim; Ama hangi yöntemde evalJs yöntemini çağırmak için Javascript String'i alacağım. Şimdiden teşekkürler. –

+0

Soru, kullanımdan kaldırılan 'writeJavascript'in nasıl değiştirileceğiydi ve soru, soru kullanım durumu için' sendPluginResult' kullanmaktır. EvalJs kullanmak istiyorsanız, kullanım durumunuz farklı olabilir. Daha fazla bilgi sağlayan yeni bir soru oluşturabilir misiniz? – jcesarmobile

+0

Oh oki .. GöndermePluginResult toErrorCallbackId ve toSuccessCallbackId ile değiştirmektir ve writeJavascript yöntemi evalJs yöntemiyle değiştirilmelidir. Eğer sendPluginResult işini yaparsa, o zaman ihtiyacım olan şey budur .. lütfen anlayışım yanlışsa lütfen beni düzeltin. Teşekkürler! –