当添加到导航控制器时,UIWebView“衰减”到UIView

时间:2009-08-18 12:52:06

标签: iphone uiwebview

我正在开发一个简单的iPhone应用程序原型,其中从UITableView中选择将用户带到显示某些内容的UIWebView。我的项目基于“基于导航的应用程序”模板,所以我有一个UINavigationController管理流程。问题是当我将UIWebView添加到导航堆栈时,我的UIWebView似乎变成了通用的UIView,这使我无法向其发送任何基于URL的内容。

在Interface Builder中,我向项目添加了一个UIViewController,将其类更改为DocViewController,并将UIWebView放入其中。 DocViewController的视图出口指向UIWebView。

当选择UITableView中的某个项目时,我会在堆栈上推送一个DocViewController:

NSLog(@"selected the row, creating the DocViewController");
DocViewController *docViewController = [[DocViewController alloc] init];
[self.navigationController pushViewController:docViewController animated:YES];
[docViewController release];

我正在使用NSLog语句检查viewDidLoad和viewWillAppear的视图插座:

NSLog(@"at viewDidLoad have view as %@", [self view]);
NSLog(@"at viewWillAppear have view as %@", [self view]);

到目前为止这么好......我想。当应用程序启动时,DocViewController获取viewDidLoad,我看到了:

at viewDidLoad have view as <UIWebView: 0xd21db0; frame = (0 20; 320 460);...

当我从表格视图中选择一个项目时,再次调用viewDidLoad,然后调用viewWillAppear,我得到这些:

at viewDidLoad have view as <UIView: 0xd164e0; frame = (0 20; 320 460);...
at viewWillAppear have view as <UIView: 0xd164e0; frame = (0 0; 320 416);... 

因此控制器在预加载时有一个UIWebView,但是当它实际上被推到堆栈上时,它会有一个UIView。

我有一种感觉,我误解了一些基本的东西,或者走错了路,或两者兼而有之。任何人都可以在这里建议正确的模式,或指出我已经歪斜的地方?非常感谢提前!

2 个答案:

答案 0 :(得分:0)

您可以尝试将UIWebView添加为控制器中主UIView的子视图。

答案 1 :(得分:0)

我有同样的问题。如果我将ViewController的视图插座设置为UIWebView它不起作用。但是作为视图子视图的Web视图工作正常。 有什么特别的原因,有人知道吗? Apple文档只说,

  

重要提示:你不应该嵌入   UIWebView或UITableView对象   UIScrollView对象。如果你这样做,   可能导致意外行为,因为   两个对象的触摸事件可以   混淆和错误处理。