我有一个标签式应用程序,其中包含一个包含UIWebView的选项卡和一个包含Table View Controller的第二个选项卡。
我正在尝试这样做,以便当我点击表格中的一行时,它会将我带到我的其他标签并加载网页。
这是我的故事板:
这是我对网络视图的实现:
-(void)loadAViewer:(NSURL*)viewerURL
{
NSURLRequest *requestObj = [NSURLRequest requestWithURL:viewerURL];
[sfnViewer loadRequest:requestObj];
}
然后在表视图控制器中:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//Get the URL from plist
...
//Generate url, pass it in and switch to web view tab
viewerURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@/viewer?username=%@&pw=%@&%@", web, loc, user, pass, params]];
ViewerFirstViewController *viewerWebView = [[ViewerFirstViewController alloc] init];
[viewerWebView loadAViewer:viewerURL];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
[self.tabBarController setSelectedIndex:0];
}
目前没有任何反应。我被带到另一个选项卡,但是有一个空白的UIWebView - 没有页面加载,但也没有崩溃。
//编辑 - 根据史蒂夫的答案进行的更改
基于此我已添加 @property(强,非原子)NSURL viewerUrl; 在我的.h文件中,用于UIWebView选项卡。
我在.m中合成了它并将其添加到我的viewDidLoad方法。
NSURLRequest *requestObj = [NSURLRequest requestWithURL:viewerURL];
[sfnViewer loadRequest:requestObj];
在Table View Controller中,我现在正在这样做。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//Get the URL from plist
...
//Generate url, pass it in and switch to web view tab
viewerURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@/viewer?username=%@&pw=%@&%@", web, loc, user, pass, params]];
ViewerFirstViewController *viewerWebView = [[ViewerFirstViewController alloc] init];
[viewerWebView setViewerUrl:viewerURL];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
[self.tabBarController setSelectedIndex:0];
}
仍无济于事。
答案 0 :(得分:1)
可能无法加载,因为当您致电loadAViewer:
时,视图本身尚未加载,因此sfnViewer
插座不会连接到故事板中的UIWebView
。
您可以通过检查sfnViewer
中的loadAViewer:
是否为零来确认。
如果是这种情况,您必须在NSURL
上定义ViewerFirstViewController
属性并分配给该属性,而不是调用loadAViewer:
。然后,在viewWillAppear:
方法中,您应该将网址加载到sfnViewer
。
但是,这会导致每次访问选项卡时都会重新加载Web视图,您可以通过检查viewerURL
是否与Web视图中当前使用的URL不同来避免这种情况:[sfnViewer.request.URL isEqual:self.viewerURL]
,如果它是相同的,则不要创建/加载请求。