无法在 WebView 中更改 URL

Can't Change URL in WebView

我正在尝试在收到一个操作时从 webview 更改 url,该操作由以下方法处理。该方法有效,但 webview url 从未更改。

- (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];
}

方法:

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

来自 setWebViewURL 参数的 url 是一个有效的 URL。我什至尝试手动设置 url 但它没有用。

我在 AppDelegate.m 上调用它:

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

有什么建议吗?

谢谢

在 appDelegate 中,而不是做:

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

在这里您正在创建视图控制器的新实例,这样您的 webView 将为 nil,因此您看不到预期的结果。

您应该 post 在应用委托中发出通知:

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

并在您的 viewController 中收听此通知:

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

并在您的视图控制器中定义方法:

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