为UIWebView设置代理

13

我该如何为我的UIWebView设置代理以使用webViewDidFinishLoad

2个回答

23

在接口文件中表明你感兴趣的内容:

@interface SomethingController : UIViewController <UIWebViewDelegate> {


然后在你的实现中,你将添加该委托方法:

- (void)webViewDidFinishLoad:(UIWebView *)webView {

    // Do whatever you want here

}

显然,SomethingController 应该是您实际使用的控制器,而 UIViewController 则是您正在实现的内容。

顺便说一下,这基本上是实现任何代理的方式。

编辑

在基于窗口的应用中,假设您的 UIWebView 在您的应用委托中,您只需将其添加到代理列表中,用逗号分隔,像这样:

@interface YourAppDelegate : NSObject <UIApplicationDelegate, UIWebViewDelegate>

你需要在应用程序委托的实现中包含webViewDidFinishLoad

编辑2

最后,你需要将你的UIWebView连接到你的控制器。通常在UIViewController的viewDidLoad方法中执行此操作,使用以下代码:

self.yourWebView.delegate = self;

这告诉UIWebView应该将消息发送到哪里。


如果我没有控制器,因为我正在使用Windows应用程序模板,怎么办?它只给了我两个文件.. .h和.m。抱歉,我很新手..谢谢 :) - Dayzza
无论您的网络视图在哪里,那就是您将侦听代理的地方。如果格式更好,我会编辑我的答案。 - Matthew Frederick
嗯,好的,谢谢伙计。我决定使用基于视图的应用程序了...我可以问你一个问题吗?实际上我的目的是在运行其他代码之前使用委托方法webViewDidFinishLoad来首先加载完网页。那么我应该把我的网页加载代码放在哪里?在loadView里面吗? - Dayzza
当然可以在您的视图控制器的ViewDidLoad中加载UIWebView,然后将您想要在webview加载完成后运行的代码放在webViewDidFinishLoad中。(如果这回答了您的问题,请勾选答案旁边的复选框,而不是此评论。) - Matthew Frederick

6

请参照下面的屏幕截图:

enter image description here

在连接inYourViewController.h之后。

@interface inYourViewController : UIViewController<UIWebViewDelegate>

现在,您已经准备好在inYourViewController.m文件中实现委托方法了。
或者
您也可以通过代码完成相同的操作。
将webView通过IBOutlet与视图控制器连接后,在inYourViewController.m文件的viewDidLoad方法中编写以下内容。
self.yourWebView.delegate=self

在您的ViewController.h文件中
@interface inYourViewController : UIViewController<UIWebViewDelegate>

现在您已经准备好实现webView的委托方法。谢谢。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接