【问题标题】:Can't Change URL in WebView无法更改 WebView 中的 URL
【发布时间】:2016-10-18 00:27:45
【问题描述】:

当我收到一个操作时,我正在尝试从 web 视图更改一个 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。我什至尝试手动设置网址,但没有成功。

我在 AppDelegate.m 上调用它:

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

有什么建议吗?

谢谢

【问题讨论】:

  • 你在设备上试试这个吗?在委托方法上放一个断点,看看新的加载请求是否被触发。
  • @TejaNandamuri 仅适用于 viewDidLoad。不是我的方法。
  • 你在 viewDidLoad 上调用你的方法吗?
  • @TejaNandamuri 否。在应用委托上,当我收到通知时。
  • @TejaNandamuri 我刚刚更新了问题。

标签: ios objective-c uiwebview


【解决方案1】:

在 appDelegate 中,而不是做:

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

在这里,您正在创建视图控制器的新实例,通过这种方式,您的 webView 将为零,因此您看不到预期的结果。

您应该在应用代理中发布通知:

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

【讨论】:

  • 非常感谢!另外,我只需要传递一个包含我需要的信息的通知对象。
猜你喜欢
  • 2018-10-05
  • 1970-01-01
  • 1970-01-01
  • 2015-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-07
相关资源
最近更新 更多