我有一个简单的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有时很糟糕。
答案 0 :(得分:3)
您需要在班级中实施UIWebViewDelegate
协议并设置self.webView = self
的委托属性。您需要为该类实现非可选的委托方法,以及webViewDidFinishLoad
,didFailLoadWithError
和webViewDidStartLoad
方法。
答案 1 :(得分:1)
我删除了整个XIB并从头开始重新构建它:没有更多问题。 IB有时很糟糕。
答案 2 :(得分:1)
在黑暗中只是一种刺伤。就上面的代码而言,你仍然没有将响应对象设置为webView委托,你已经设置了一个指向webView委托对象的指针,但是当webView响应委托时,它仍然是零。 / p>
你应该有:self.webView.delegate = a;但即便如此,我也不知道这是否有效,因为我不知道它是什么,它是否会响应委托回调?
答案 3 :(得分:-1)
您必须在班级中实施UIWebViewDelegate
协议并设置self.webView.delegate=self;