我正在开发一个简单的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。
我有一种感觉,我误解了一些基本的东西,或者走错了路,或两者兼而有之。任何人都可以在这里建议正确的模式,或指出我已经歪斜的地方?非常感谢提前!
答案 0 :(得分:0)
您可以尝试将UIWebView添加为控制器中主UIView的子视图。
答案 1 :(得分:0)
我有同样的问题。如果我将ViewController的视图插座设置为UIWebView它不起作用。但是作为视图子视图的Web视图工作正常。 有什么特别的原因,有人知道吗? Apple文档只说,
重要提示:你不应该嵌入 UIWebView或UITableView对象 UIScrollView对象。如果你这样做, 可能导致意外行为,因为 两个对象的触摸事件可以 混淆和错误处理。