iPhone - 没有调用webViewDidFinishLoad

时间:2011-10-22 22:13:20

标签: iphone cocoa-touch uiwebview properties interface-builder

我有一个简单的IB视图,它只包含一个UIWebView和一个UIButton webView保留,连接,而不是nil,委托属性os也连接,Controller符合UIWebViewDelegate并设置为.h。
在ViewDidLoad中,我使用[self.webView loadHTMLString:htmlContent baseURL:nil];

内容加载,但webViewDidFinishLoad永远不会被触发,didFailLoadWithError也不会webViewDidStartLoad

我怎么知道我的内容何时加载,因为它需要很短的时间,但仍然需要加载(我需要在展示期间做一些事情,例如没有显示按钮)?

@interface MyController : UIViewController <UIWebViewDelegate> {
    UIWebView* webView;
}

@property (nonatomic, retain) IBOutlet UIWebView* webView;

@end


@implementation MyController

@synthesize webView;

- (void)viewDidLoad
{
[super viewDidLoad];

constructing the htmlString

id a = self.webView.delegate; // for debug
[self.webView loadHTMLString:htmlContent baseURL:nil];
}

@end

编辑: 我删除了整个XIB并从scrathc构建它:没有更多问题。 IB有时很糟糕。

4 个答案:

答案 0 :(得分:3)

您需要在班级中实施UIWebViewDelegate协议并设置self.webView = self的委托属性。您需要为该类实现非可选的委托方法,以及webViewDidFinishLoaddidFailLoadWithErrorwebViewDidStartLoad方法。

答案 1 :(得分:1)

我删除了整个XIB并从头开始重新构建它:没有更多问题。 IB有时很糟糕。

答案 2 :(得分:1)

在黑暗中只是一种刺伤。就上面的代码而言,你仍然没有将响应对象设置为webView委托,你已经设置了一个指向webView委托对象的指针,但是当webView响应委托时,它仍然是零。 / p>

你应该有:self.webView.delegate = a;但即便如此,我也不知道这是否有效,因为我不知道它是什么,它是否会响应委托回调?

答案 3 :(得分:-1)

您必须在班级中实施UIWebViewDelegate协议并设置self.webView.delegate=self;