以下目标C代码在单击时失败,并显示错误消息“ HTTP任务失败(错误代码:-999)。当将UIWebView加载到当前viewController中时,它可以工作,因此与链接无关。这在手机和模拟器上都无法正常工作。
- (void)handleSingleTap:(UITapGestureRecognizer *)recognizer
{
NSString *urlString = [_array_url objectAtIndex:recognizer.view.tag];
NSURL *url = [NSURL URLWithString:urlString];
NSLog([_array_url objectAtIndex:recognizer.view.tag]);
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
UIWebView *webview=[[UIWebView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width,self.view.frame.size.height)];
UIViewController *avc = [self.storyboard instantiateViewControllerWithIdentifier:@"ArticleView"];
[avc.view addSubview:webview];
[webview loadRequest:urlRequest];
[self.navigationController pushViewController:avc animated:YES];
}
答案 0 :(得分:0)
当将UIWebView加载到当前viewController中时有效
因此,如果此无效起作用,那么不要这样做:
UIViewController *avc = [self.storyboard instantiateViewControllerWithIdentifier:@"ArticleView"];
[avc.view addSubview:webview];
[webview loadRequest:urlRequest];
[self.navigationController pushViewController:avc animated:YES];
您在这里违反了所有规则:
在创建另一个视图控制器的 view 之前,请勿讲话。该视图尚未加载,您正在强制其过早加载。
您不得直接更改其他视图控制器的界面。
在视图控制器甚至不是视图控制器层次结构的一部分之前,切勿强行启动url请求加载。
您在这里所做的一切都是错误的。那不是您与视图控制器对话的方式!
相反,只需给ArticleViewController一个request
属性:
ArticleViewController *avc = (ArticleViewController*)[self.storyboard instantiateViewControllerWithIdentifier:@"ArticleView"];
avc.request = urlRequest;
[self.navigationController pushViewController:avc animated:YES];
那是创建视图控制器时可以执行的操作:可以设置属性。就这样!现在,ArticleViewController可以将Web视图添加到其自己的视图中,并以其自己的viewDidLoad
加载请求。