【问题标题】:Does storyboard eliminate the need for .nib故事板是否消除了对 .nib 的需求
【发布时间】:2012-01-19 16:17:01
【问题描述】:

随着storyboard的引入,我在创建UIViewController的子类时不会选择创建.xib/.nib,因为我可以直接在interface builder中拖出一个viewcontroller并分配给新的类。

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

谢谢。

【问题讨论】:

  • 我从未使用过故事板,但它不就像一个创建应用程序或至少视图的向导吗?我非常怀疑它创建的视图与手动创建的视图有什么不同。我敢打赌那些 xib 文件仍然存在但隐藏
  • 它不在文件层次结构中,根文件夹中没有实际文件。

标签: iphone xcode cocoa-touch uistoryboard


【解决方案1】:

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

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

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

【讨论】:

  • + 1 表示简洁、准确和中肯。更不用说实际回答问题了。
【解决方案2】:

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

【讨论】:

  • 谢谢。现在,当我看到所有这些来自 pre-storyboard 时间谈论使用 .xib 的教程时,我感觉更舒服了
  • 在开始使用情节提要重新设计整个界面之前,您可能需要阅读 Jonathan Wight 对他所遇到的技术问题的详尽描述:toxicsoftware.com/uistoryboard-issues
  • Brad Larson 评论中提到的 URL 似乎已经移动,现在是 toxicsoftware.com/uistoryboard-issues.html
【解决方案3】:

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

专业人士

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

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

    示例 2:您可以为 TableView 制作“原型单元”,从而显着加快静态表格视图的创建速度。 AFAIK,这是 not possible,带有 nib 文件

  • 很酷:-)

骗局

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

所以考虑到这些点,我仍然觉得故事板非常吸引人,但将这两种方法结合起来是有意义的,这并不是什么大不了的事。此外,这项技术仍然很新,因此可能会在(不久的)将来得到改进。

【讨论】:

    【解决方案4】:

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

    【讨论】:

    • 当您想重用特定视图时,您不必创建 nib 文件。例如,如果您有某种评分视图(5 星中的 4 星),您想将其放置在不同的地方?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 2016-11-25
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多