UIWebView 未加载页面

发布于 2024-08-11 12:14:08 字数 867 浏览 4 评论 0原文

我有一个 UITabBarController,其中一个栏项是一个导航控制器,上面有一些按钮。 其中一个按钮会打开 urlRequest 并将其加载到 UIWebView 中。

NSURL * url = [NSURL URLWithString:myUrl];
NSURLRequest * urlRequest = [NSURLRequest requestWithURL:url];
UIWebView * web = [tView wView];
[web setScalesPageToFit:YES];
[web loadHTMLString:@"Loading" baseURL:nil];
[web loadRequest:urlRequest];
[self.navigationController pushViewController:tView animated:YES];

由于某种原因,当我第一次单击该按钮时没有任何反应。

我使用 UIWebViewDelegate 协议来调试它,如下所示:

- (void)webViewDidStartLoad:(UIWebView *)webView
{
    NSLog(@"webViewDidStartLoad");

}

当我单击按钮时,没有任何反应,并且我没有看到 NSLog 消息。 当我回击并再次单击按钮时,我看到调试并且一切正常。

知道是什么原因造成的吗?

PS如果我把: [self.navigationController PushViewController:tViewanimated:YES];

在 webViewDidStarLoad 方法中,应用程序只是挂起,因为它不会在第一次单击时加载它。

I got a UITabBarController and one of the bar items is a Navigation Controller with some buttons on it.
One of the buttons opens up a urlRequest and load it in a UIWebView.

NSURL * url = [NSURL URLWithString:myUrl];
NSURLRequest * urlRequest = [NSURLRequest requestWithURL:url];
UIWebView * web = [tView wView];
[web setScalesPageToFit:YES];
[web loadHTMLString:@"Loading" baseURL:nil];
[web loadRequest:urlRequest];
[self.navigationController pushViewController:tView animated:YES];

For some reason when i click the button for the first time nothing happens.

I used the UIWebViewDelegate protocol to debug it like so:

- (void)webViewDidStartLoad:(UIWebView *)webView
{
    NSLog(@"webViewDidStartLoad");

}

When i click the button nothing happens, and i don't see the NSLog message.
When i hit back and click the button again, i see the debug and everything works just find.

Any idea what causing this ?

P.S if i put the :
[self.navigationController pushViewController:tView animated:YES];

in the webViewDidStarLoad method the application just hang, since it's not loading it on the first click.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

静若繁花 2024-08-18 12:14:08

您需要确保 tView 的视图已加载。当 viewController 被实例化时,它的视图(以及它的所有 IBOutlet)都是 nil,并且保持这种状态直到视图被加载。

您有两个选择:将加载内容移动到 tView 的 -viewDidLoad 方法中,或者在调用 [tView wView] 之前强制加载视图,例如调用 [tView view] (这将强制加载 XIB 文件,并且所有要连接的插座。

You need to make sure that tView's view has been loaded. When a viewController is instantiated, its view (and all of it's IBOutlets) are all nil, and remain that way until the view is loaded.

You have two options: move your load stuff into tView's -viewDidLoad method, or force the view to load before calling [tView wView] by, for example, calling [tView view] (this will force the XIB file to be loaded, and all outlets to be connected.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文