【发布时间】:2016-12-11 18:46:24
【问题描述】:
我已经在 ViewController 中的 viewDidLoad 方法中开发了 webView
UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
id <UIWebViewDelegate> delegate =[[MyDelegate alloc] init];
webView.delegate = delegate;
NSError *error;
NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
NSString *htmlContent = [[NSString alloc] initWithContentsOfFile:htmlFile encoding:NSUTF8StringEncoding error:&error];
[webView loadHTMLString:htmlContent baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]];
[self.view addSubview:webView];
我在 MyDelegate 类的实例上设置了委托。
在 MyDelegate 类中:
#import <UIKit/UIKit.h>
@interface MyDelegate : NSObject <UIWebViewDelegate>
@end
#import "MyDelegate.h"
@implementation MyDelegate
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
return YES;
}
@end
但是在启动加载过程中应用我的崩溃。 如果我没有加载 html 内容,但 url(例如“google.com”)会发生崩溃。
当我评论这个“webView.delegate = delegate;”时不会发生崩溃。
我知道我可以在 ViewController.h 中使用它:
@interface ViewController : UIViewController<UIWebViewDelegate>
这在 viewDidLoad:
webView.delegate = self;
但我需要使用其他类作为委托(不是 ViewController),但 webview 必须位于 ViewController 中。
我怎样才能做到这一点? 帮帮我!
【问题讨论】:
-
对于其他类作为委托,您可以使用协议。
-
感谢您的评论,但您是什么意思?我使用协议 UIWebViewDelegate。我需要使用其他协议吗?
-
什么是崩溃信息?
-
我没有收到任何消息。只是应用停止在线'return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));'
-
我看到了 - 线程 1 exc_bad_access (code=1 address=0x8)
标签: ios objective-c iphone webview