在我的UITableView
中选择了一个单元格后,我将self.itemURL
设置为该单元格的相应网址,然后转到WebViewController
并加载该网址。
这里是点击一个单元格时发生的逻辑:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (_matchCenterDone == YES) {
self.itemURL = _matchCenterArray[indexPath.section][@"Top 3"][indexPath.row+1][@"Item URL"];
NSLog(@"The URL IS:'%@", self.itemURL);
[self performSegueWithIdentifier:@"WebViewSegue" sender:self];
}
}
NSLog打印出The URL IS:'http://www.ebay.com/itm/NEW-Sony-XPERIA-Z3-Compact-D5803-FACTORY-UNLOCKED-/131554310432?pt=LH_DefaultDomain_0
,告诉我self.itemURL
确实存在,并且是格式正确的URL。
在我转到WebViewController
之前,我这样做:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"WebViewS egue"]){
// Opens item in browser
WebViewController *controller = (WebViewController *) segue.destinationViewController;
controller.itemURL = self.itemURL;
}
}
这是WebViewController
viewDidLoad
函数的样子:
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"The url in webview is: '%@'", self.itemURL);
// Initialize UIWebView
self.myWebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 60, self.view.frame.size.width,
self.view.frame.size.height)];;
self.myWebView.delegate = self;
[self.view addSubview:self.myWebView];
// set the url
NSURL *url = [NSURL URLWithString:self.itemURL];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
// make url request
[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
{
if ([data length] > 0 && error == nil) {
[self.myWebView loadRequest:request];
[activityIndicator stopAnimating];
}
else if (error != nil) NSLog(@"Error: %@", error);
}];
[self.myWebView setScalesPageToFit:YES];
}
上面的NSLog注销The url in webview is: '(null)'
,控制台会注明错误,说明Error: Error Domain=NSURLErrorDomain Code=-1002 "unsupported URL" UserInfo=0x7fcbfa5e7f10 {NSLocalizedDescription=unsupported URL, NSUnderlyingError=0x7fcbfa64bec0 "unsupported URL"}
我的初始视图控制器与WebViewController
之间发生的导致self.itemURL
的内容是否为空,因此无法加载网址?
答案 0 :(得分:1)
您的prepareForSegue:
方法中的segue标识符字符串中有一个空格:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"WebViewS egue"]){
// ^ space here
// Opens item in browser
WebViewController *controller = (WebViewController *) segue.destinationViewController;
controller.itemURL = self.itemURL;
}
}
你 正在调用WebViewController
的实例,但是没有设置其itemURL
属性,因为该if语句中的代码没有被执行。
取出空间,它应该有效。