繁体   English   中英

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

[英]UIWebView “decays” to UIView when added to navigation controller

我正在研究一个简单的iPhone应用程序原型,其中从UITableView中进行选择将用户带到显示一些内容的UIWebView。 我的项目基于“基于导航的应用程序”模板,因此我有一个UINavigationController管理流程。 问题是,当我将其添加到导航堆栈时,我的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。

我觉得我误会了一些基本知识,或者走错了路,或者两者兼而有之。 有人可以在这里建议正确的模式,或指出我去哪里歪了吗? 首先十分感谢!

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

我有同样的问题。 如果我将ViewController的视图出口设置为UIWebView,它将无法正常工作。 但是将Web视图作为视图的子视图可以正常工作。 任何特定的原因,有人知道吗? 苹果文件只说

重要说明:您不应在UIScrollView对象中嵌入UIWebView或UITableView对象。 如果这样做,可能会导致意外行为,因为两个对象的触摸事件可能会混合在一起并且处理不当。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM