iPhone:nib文件+代码=混淆
我对何时应该使用NIB文件以及什么时候应该使用代码感到有些困惑。
这是我的问题:
我有一个基于导航的应用程序与RootController及其NIB文件。
RootController的NIB文件包含TableView。
当我单击一个单元格时,我使用加载内容的请求初始化一个新连接。
当连接完成加载后,我从NIB文件创建一个新的postViewController(自定义),我将它推送到navigationController viewController堆栈,如下所示:
PostViewController *postViewController = [[PostViewController alloc] initWithNibName:@"PostViewController" bundle:[NSBundle mainBundle]];
[postViewController.webView setDelegate:self];
postViewController.postContent = [[postsData objectForKey:@"post"] objectForKey:@"content"];
[self.navigationController pushViewController:postViewController animated:YES];
[PostViewController release];
然后,正如您所看到的,我尝试将rootViewController设置为webView的委托,以便能够拦截链接上的单击并在堆栈上推送新的ViewController。我需要新的视图来使用带有后退按钮的导航栏。
问题:看起来setDelegate无法正常工作,因为webView:shouldStartLoadWithRequest:navigationType永远不会被调用!
我想我应该在NIB文件中设置委托,但我不知道如何。 PostViewController的NIB文件不知道RootViewController ...
以下是NIB文件的屏幕截图:
如果您需要更多细节,请问我。
非常感谢...帮助我不再敲打我的脑袋:)
没有找到相关结果
已邀请:
2 个回复
峨躬坎抬焚
设置当前控制器的代表不是
。尝试:
你可以把这行放在
以下,然后webView应该已经存在了。
搁手
时,确保
不是零。还要确保没有在其他任何地方调用它,并确保代理插座未连接到NIB中的任何内容。 其他几条评论: 在这种情况下使用根视图控制器作为webview的委托是有点不寻常的。它应该工作,但将这些委托方法下移到PostViewController可能更有意义。从那里你仍然可以拦截链接点击并致电
。
正在释放类对象。不是个好主意。相反,你应该打电话给
。