2016-10-18 3 views
0

Ich versuche, eine URL aus einer Webansicht zu ändern, wenn ich eine Aktion erhalte, die durch die folgende Methode behandelt wird. Die Methode funktioniert, aber die Webview-URL wird nie geändert.Kann URL in WebView nicht ändern

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    myWebView.delegate = self; 
    NSString *fullURL = @"http://cardapiomestre.com.br/beta"; 
    NSURL *url = [NSURL URLWithString:fullURL]; 
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; 
    [myWebView loadRequest:requestObj]; 
} 

Die Methode:

-(void) setWebViewURL:(NSString*)url 
{ 
    NSString *urlAddress = url; 
    NSURL *essaUrl = [NSURL URLWithString:urlAddress]; 
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:essaUrl]; 
    [self.myWebView loadRequest:requestObj]; 
} 

Die URL von setWebViewURL param ist es eine gültige URL. Ich habe sogar versucht, die URL manuell zu setzen, aber es hat nicht funktioniert.

Ich nenne es auf AppDelegate.m:

ViewController* myScript = [[ViewController alloc] init]; 
[myScript setWebViewURL:@"http://google.com"]; 

Jede Beratung?

Dank

+0

Versuchen Sie dies auf dem Gerät? Setzen Sie einen Haltepunkt auf Delegate-Methoden und sehen Sie, ob die neue Ladeanforderung ausgelöst wird oder nicht. –

+0

@TejaNandamuri Funktioniert nur auf viewDidLoad. Nicht nach meiner Methode. –

+0

Rufen Sie Ihre Methode auf ViewDidLoad? –

Antwort

0

Im AppDelegate, anstatt das zu tun:

ViewController* myScript = [[ViewController alloc] init]; 
[myScript setWebViewURL:@"http://google.com"]; 

Hier erstellen Sie eine neue Instanz der View-Controller und auf diese Weise wird Ihr webView gleich Null, daher sind Sie nicht zu sehen, das erwartete Ergebnis.

Sie sollten eine Benachrichtigung in AppDelegate schreiben:

[[NSNotificationCenter defaultCenter] postNotificationName:@"refreshWebView" object:nil]; 

und in Ihrem Viewcontroller, hören zu dieser Mitteilung:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadWebView) name:@"refreshWebView" object:nil]; 

und in Ihren View-Controller definieren Methode:

-(void)reloadWebView{ 
    NSString *urlAddress = @"your-url"; 
    NSURL *essaUrl = [NSURL URLWithString:urlAddress]; 
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:essaUrl]; 
    [self.myWebView loadRequest:requestObj]; 
} 
+0

Vielen Dank Mann! Außerdem musste ich nur ein Benachrichtigungsobjekt mit den benötigten Informationen übergeben. –