我用UIViewController创建了一个UIWebView,并试图将其作为子视图添加到另一个UIViewController中。这会导致崩溃,从而发送错误的请求。
包含WebView的代码控制器如下所示:
@interface WebViewController : UIViewController
@end
@interface WebViewController () <UIWebViewDelegate>
{
IBOutlet UIWebView *webView;
}
@end
@implementation WebViewController
- (void)viewDidLoad {
[super viewDidLoad];
webView.delegate = self;
NSString *str = [NSString stringWithFormat:@"<html><body>This is html text</body></html>"];
[webView loadHTMLString:str baseURL:nil];
// Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
return YES;
}
- (void)webViewDidStartLoad:(UIWebView *)webView{
}
- (void)webViewDidFinishLoad:(UIWebView *)webView{
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{
}实现WebViewController的代码是:
WebViewController *obj = [self.storyboard instantiateViewControllerWithIdentifier:@"webView"];
[self.view addSubview:obj.view];发布于 2014-12-03 12:45:14
您需要添加控制器之间的关系,添加以下内容:
[self addChildViewController:obj];在您的代码中是:
WebViewController *obj = [self.storyboard instantiateViewControllerWithIdentifier:@"webView"];
[self addChildViewController:obj];
[self.view addSubview:obj.view];发布于 2014-12-03 12:45:43
UIViewController实例不应该用作其view的简单初始化符和委托,通常使用UIWindow、UIViewController (或它的子类)方法来表示另一个视图控制器,在您的示例中,使用WebViewController实例作为子视图控制器似乎是合理的:
[self addChildViewController:obj];
[self.view addSubview:obj.view];https://stackoverflow.com/questions/27271759
复制相似问题