我正在试图弄清楚如何将我在界面构建器中创建的所有视图与导航控制器相关联,但我发现这个概念有点难以理解。
我看过的所有示例代码都显示了如何使用存储所有控制器的数组执行此操作,并且我发现很难适应我的项目,因为我的视图完全是在IB中构建的,而不是在xCode中。< / p>
提前感谢。
答案 0 :(得分:2)
一般来说,导航控制器会维护一组您可以推送和弹出的viewControllers。如果在将导航控制器从库中拖动到应用程序窗口时使用IB,它实际上会添加许多对象,包括将充当根视图控制器的UIViewController。将该根视图控制器的类更改为您的第一个视图控制器的类。
您可以创建其他视图控制器(我会将这些其他视图控制器放在单独的NIB文件中),然后在您想要使它们可见时将其推送到视图控制器堆栈。您无需将它们链接到IB中的导航控制器。
因此,例如,为了将一个新的视图控制器推送到堆栈,你会得到一些像这样的代码(视图控制器是从DetailView.xib加载的:
DetailViewController *viewController = [[DetailViewController alloc]
initWithNibName:@"DetailView" bundle:nil];
viewController.someAttribute = someValue;
[[self navigationController] pushViewController:viewController animated:YES];
[viewController release];
如果您使用的是UITableViewControllers,可以将此代码放在didSelectRowAtIndexPath:indexPath方法中,以便在用户选择表中的行时显示新的视图控制器。
当用户点击后退按钮时,导航控制器将负责弹出顶视图控制器,或者您可以通过调用popViewControllerAnimated自己弹出它:
[[self navigationController] popViewControllerAnimated:YES]