19

随着故事板的引入,我在创建 UIViewController 的子类时不会选择创建 .xib/.nib,因为我可以在界面生成器中拖出一个视图控制器并将其分配给新类。

那么,有了故事板,我什么时候需要使用 .xib/.nib 文件?

谢谢你。

4

4 回答 4

33

故事板并没有完全消除对 NIB 文件的需求。一个常见的例子是创建子视图以进入UIScrollView. 您不能在情节提要中单独创建子视图;相反,您必须为子视图创建单独的 NIB,并以编程方式将它们附加到滚动视图。

事实上,几乎在任何需要在运行时更改子视图的情况下,您都需要使用单独的 NIB。

故事板非常适合某些类型的应用程序,但对于任何复杂的东西,旧方法仍然可以很好地工作。另一个好处是它们可以很好地共存。您可以将占位符视图放在情节提要中,并稍后以编程方式使用 NIB 定义的视图填充它们。

于 2011-12-13T20:45:49.397 回答
11

我猜,情节提要包含所有视图的 .xib/.nib 文件。它呈现了它们之间的关系,如果你有很多观点,它可以帮助你避免混淆。此外,它还可以在编写代码时节省您的时间和精力。

于 2011-12-13T20:33:14.373 回答
10

我最近尝试了故事板,我对它的使用感觉很复杂:

专业人士

  • 方便:您可能需要编写更少的代码。因此,您可以例如显示静态视图,而无需编写任何代码。
  • 概述:您可以快速查看 ViewController 之间的关系
  • 效率:对于简单的用例,我发现故事板比“旧方法”更有效。

    示例 1:Editor > Embed In > Navigation Controller瞧,不再需要实例化和配置。

    示例 2:您可以为 TableView 制作“Prototype Cells”,从而显着加快静态表格视图的创建速度。AFAIK 这对于 nib 文件是不可能的

  • 这个很酷 :-)

骗局

  • 我发现故事板的可重用性在某种程度上受到了影响。尽管我可以从多个点继续到给定的 ViewController,但它仍然受到限制,因为在一种情况下我可能将 VC 用作 Popover,而在另一种情况下用作 Master-ViewController。
  • 假设您在一个大团队中工作,并且不同的人正在更改应用程序的不同部分,那么拥有一个必须合并的单一故事板可能会给团队工作带来很大的问题。
  • 我真的很想有一些机制将现有的 nib 文件包含或引用到故事板中,这目前是不可能的。

So considering these points I still find storyboarding very appealing but it makes sense to combine both approaches which is not really a big deal. Additionally, this technology it is still quite new so it might improve in the (near) future.

于 2011-12-20T10:56:47.100 回答
4

如果您使用情节提要,通常不需要创建单独的 .xib 文件。如果你愿意,你仍然可以使用 .xib 文件——它可能很有用,例如,如果你有一个特别复杂的视图,你想自己配置。但是,大多数情况下,没有必要这样做。

于 2011-12-13T20:39:09.930 回答