2009-11-12 41 views
1

我有一个mainwindow.xib文件,其中UITabBarController作为应用程序的基本视图控制器。所以在UITabBarController中,我添加了约10个sub UIViewController对象作为选项卡。它们中的大多数仅仅是UITableViewController小类或者包含UITableViewController小类的UINavigationController在mainwindow.xib中声明UITabBarController的约定是什么?

在此设计中,每个UIViewController都在应用程序启动时完全加载,包括调用每个视图控制器的viewDidLoad方法。有什么办法可以解决这个问题吗?由于视图控制器只是UITableViewControllers而没有其他插座,所以为每个选项卡创建一个NIB似乎过分了(我认为这会允许viewDidLoad只在用户第一次切换到选项卡时才被调用?或者我错了? )

无论如何,我的问题主要是:如何按照惯例完成?如果你在一个UITabBarController上有10个不同的视图控制器,你把它们全部放在mainwindow.xib中吗?如果是这样,每个人都应该拥有自己的NIB,如果没有,您将他们放在哪里,以及如何将它们添加到标签栏?

回答

1

你想要做的就是在每个视图的不同xib文件中定义UIViewController视图 - 它们都被实例化的原因是,当xib加载时,xib加载的所有对象都加载 - 这意味着所有的因为您在那里定义了视图和视图控制器。

在MainWindow.xib中定义了标签栏,您仍然可以在每个标签中设置将被调用的视图控制器类型以及用于该类型的XIB文件(使用“TabBar”创建一个新项目应用程序“模板和第二个默认视图将是这样)。

然后,当您按下标签页时,视图控制器将从您定义的不同XIB文件实例化。

请注意,这意味着如果您使用IB将按钮添加到导航栏,则必须在TabBar xib中执行此操作,而不是在用于定义视图的xib中执行此操作。您仍然可以将操作链接到选项卡中的视图控制器定义。

+0

足够容易,我能够创建一个NIB文件,并为每个选项卡引用同一个文件,因为它们几乎只是一个普通的'UITableViews',代码就是区别它们的代码。 – 2009-11-12 20:30:49

0

苹果公司建议为纯NIB文件做的方式是如何说:Each sub-view in its own NIB file。我想create the UITabBarController programmatically。这样你就可以在代码中定义你所有的简单视图,并且仍然是load complex views from NIB files

就我个人而言,我更倾向于尽可能以编程方式创建尽可能多的视图。编译后的代码比NIB文件的占用空间更小,我觉得我有更多的控制权。我大多使用Interface Builder来模拟应用程序。

+0

为什么降票? – 2009-11-12 16:34:44

+0

不是我,我发誓! – 2009-11-12 21:44:44