从同一ViewController中的UITableView加载UIWebView不起作用

时间:2012-06-03 20:35:35

标签: xcode uitableview uiwebview horizontal-scrolling

我正在使用iPad应用,我遇到了webview加载问题。我在顶部有一个ViewController水平滚动桌面视图。在此表视图中,另一个tableview被添加为子视图并旋转90度,然后将自定义单元格加载到此视图中。这给了我水平滚动效果。然后,UIWebview直接位于tableview下方。 tableview由新闻文章填充,我想在选择文章时加载完整的网页。除UIWebView无法加载外,一切正常。我已经尝试了我能想到的一切&无法弄清楚为什么。

有点复杂,如何将所有事情都设置得如此恶心,并尝试解释我能做的一切。 UIWebView所使用的主Viewcontroller使用Horizo​​ntalTableViewController作为其类。 tableview使用Horizo​​ntalTableCell作为其类。下面是我用来加载UIWebView的代码:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{


[tableView deselectRowAtIndexPath:indexPath animated:YES];



NSString *loadURL;
loadURL=[[[NSString alloc] initWithString:urlString]stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSURL* url = [NSURL URLWithString:loadURL];

[self.horizontalTableViewController.webView loadRequest:[NSURLRequest requestWithURL:url]];







 NSLog(@"Load URL = %@",loadURL);

}

从日志中我可以看到网址是正确的,但UIWebView仍然是空白的&不加载。 我已将webview设置为Horizo​​ntalTableViewController中的Outlet。

视图层次结构为:

2012-06-04 10:22:08.568 Bandz[21211:fb03] *** Printing out all the subviews of     HorizontalTableViewController (UIViewController) ***
2012-06-04 10:22:08.570 Bandz[21211:fb03]    [0]: class: 'UITableView'
2012-06-04 10:22:08.570 Bandz[21211:fb03]       [0]: class: 'UIImageView'
2012-06-04 10:22:08.571 Bandz[21211:fb03]       [1]: class: 'UIImageView'
2012-06-04 10:22:08.571 Bandz[21211:fb03]    [1]: class: 'UINavigationBar'
2012-06-04 10:22:08.572 Bandz[21211:fb03]       [0]: class: 'UINavigationBarBackground'
2012-06-04 10:22:08.572 Bandz[21211:fb03]       [1]: class: 'UINavigationItemView'
2012-06-04 10:22:08.572 Bandz[21211:fb03]       [2]: class: 'UINavigationButton'
2012-06-04 10:22:08.573 Bandz[21211:fb03]          [0]: class: 'UIButtonLabel'
2012-06-04 10:22:08.573 Bandz[21211:fb03]    [2]: class: 'UIWebView'
2012-06-04 10:22:08.574 Bandz[21211:fb03]       [0]: class: '_UIWebViewScrollView'
2012-06-04 10:22:08.575 Bandz[21211:fb03]          [0]: class: 'UIImageView'
2012-06-04 10:22:08.575 Bandz[21211:fb03]          [1]: class: 'UIImageView'
2012-06-04 10:22:08.576 Bandz[21211:fb03]          [2]: class: 'UIImageView'
2012-06-04 10:22:08.576 Bandz[21211:fb03]          [3]: class: 'UIImageView'
2012-06-04 10:22:08.577 Bandz[21211:fb03]          [4]: class: 'UIImageView'
2012-06-04 10:22:08.595 Bandz[21211:fb03]          [5]: class: 'UIImageView'
2012-06-04 10:22:08.595 Bandz[21211:fb03]          [6]: class: 'UIImageView'
2012-06-04 10:22:08.596 Bandz[21211:fb03]          [7]: class: 'UIImageView'
2012-06-04 10:22:08.596 Bandz[21211:fb03]          [8]: class: 'UIImageView'
2012-06-04 10:22:08.597 Bandz[21211:fb03]          [9]: class: 'UIImageView'
2012-06-04 10:22:08.597 Bandz[21211:fb03]          [10]: class: 'UIWebBrowserView'

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

如果我理解正确的情况,您不应该使用完整的不同视图控制器。视图控制器中的视图控制器永远不是一个好主意,如果它甚至可能的话。在没有控制器的情况下创建UITableView(或子类)。然后为UITableView创建一个属性,并在didSelectRowAtIndex中设置它的属性。

答案 1 :(得分:0)

目前尚不清楚为什么要在tableView:didSelectRowAtIndexPath:中执行此操作,因为只有当用户点击表格中的某一行时才会调用该方法。应在tableView:cellForRowAtIndexPath:中调用将内容放入单元格的代码。

但是,根据您的设计,您将遇到问题。您在视图控制器中有两个表视图,并且两者都将其委托设置为self,然后在您实现的任何tableView:...方法中,您需要检查tableView参数所以你知道哪个表视图正在进行调用。

最后,您的HorizontalTableViewController课程以某种方式包含您的UIWebView,但它在问题中看起来不像您的描述。发布该位的代码 - 可能是您没有实例化Web视图。