【问题标题】:XIB over Storyboard [closed]XIB over Storyboard [关闭]
【发布时间】:2014-08-24 11:57:44
【问题描述】:

目前我们在所有项目中都使用 Storyboard 而不是 xib。但在我看来,如果您想制作可在不同视图控制器中重用的可重用视图(自定义视图或 Tableview 单元格),您必须像在故事板中那样使用 xib 文件,我们无法单独制作单个视图对象。

请注意,我将 Storyboard 用于整个应用程序的工作流程(带有 segues 的视图控制器)。仅适用于我使用 XIB 的可重复使用的 tableview 单元格。

我搜索了很多苹果文档以及 WWDC 视频,但我找不到任何来自 Apple 开发人员的具体证据表明 XIB 将继续存在,或者您应该使用 XIB 进行自定义视图。

如果你们中的任何人有任何类型的链接,让我们有信心我们仍然可以使用 XIB 而不必担心苹果会删除它,我们将不胜感激。

【问题讨论】:

  • 您可以使用多个故事板,并在应用程序的不同部分重用故事板中的元素。而且你不会赢得争论,因为苹果通常不会提供有关他们未来计划的详细信息。问问你的前辈,他们为什么还要使用故事板。代码将比某些奇怪的格式保留更长的时间。
  • 感谢您的回复。据我所知,我们只能在 Storyboard 中创建视图控制器作为根对象。不是吗?如果我只想创建小的自定义视图怎么办。我们必须使用 xib(如果不在代码中)对吗?
  • 是的,你是对的。您只能从情节提要 (instantiateViewControllerWithIdentifier) 中获取视图控制器。很抱歉造成混乱。

标签: ios uistoryboard


【解决方案1】:

当您不重复使用视图时,建议使用故事板。

一旦您想在多个视图/故事板中重复使用某些内容,您就需要 XIB。您已经提到了自定义单元格的示例。这是我经常需要的东西,我想在多个表格视图中使用同一个单元格。我对图表也是如此。我创建了一个图表视图,在其中设置了颜色等,我在任何地方重复使用它,只在其中放入不同的数据。这为我节省了大量关于样式/外观的代码,并使应用程序易于维护。如果发生更改(例如,由于新的 iOS 版本),我需要在一个地方更改所有内容。

此外,我想拥有 iPhone 和 iPad 的视图(例如单元格),并让系统决定使用哪一个。为此,我再次需要 XIB。我在末尾使用带有~iphone~ipad 的符号,我不必编写代码来检索正确的视图。

如果没有 XIB,这是您根本无法做到的两件事。因此,遵循 Apple 指南,我的方法是尽可能使用故事板,仅在需要时使用 XIB(主要是因为可重用性)。但也有需要XIB的真实案例!简单地忽略它们肯定不是一个好习惯。实际上,在每个项目中,我都有故事板和 XIB。

编辑:我刚刚找到了一个great post,它解释了故事板的缺点。有很多我不知道的事情。

【讨论】:

    【解决方案2】:

    此外,您不必专门使用其中任何一个。即使您的大部分工作都在情节提要中,您仍然可以使用 XIB 文件。并且使用任何一个也不会限制您创建一个根本不是在 IB 中构建的视图。

    故事板有很多很多优点。特别是当您开始在项目中引入新人时。新开发人员无需沉浸在数十万行代码中,只需查看故事板即可在 30 分钟或更短的时间内对应用程序的流程有一个很好的了解。

    话虽如此,您永远不应该将自己限制在任何事情上。将自己限制在情节提要上,从不使用 XIB 或完全在代码中构建视图就像说“我们只会使用 NSArrays,而不是 NSDictionary 或 NSSet”。您应该始终确保使用正确的工具来完成工作,而不是愚蠢的限制。

    【讨论】:

      【解决方案3】:

      我的意见是使用哪个适合该上下文,这里有一些指导方针:

      何时使用笔尖

      • 模块化是精心设计的 nib 文件的关键
      • 使用 nib 存储视图、子视图、自定义控件或重复视图
      • 无法表示相关内容屏幕之间的关系

      何时使用故事板

      • 故事板最适合用于表示内容屏幕以及这些屏幕之间的连接
      • 对 prepareForSegue:sender: 方法给予应有的关注和关注
      • 模块化在设计故事板时仍然适用

      一般准则

      • 将您的项目分解为 nib 和故事板
      • 视图、子视图和自定义控件应包含在单独的 nib 文件中 在设计全屏内容时使用故事板,并且场景之间有清晰的关系
      • 考虑界面需要是静态的还是动态的
      • 使用单独的故事板来封装可重复使用的场景序列
      • 对不相关的场景使用单独的故事板
      • 可以跨不同控制器重复使用的表格视图单元格属于 nib 文件

      【讨论】:

        猜你喜欢
        • 2013-08-26
        • 2012-01-02
        • 1970-01-01
        • 2013-03-12
        • 2016-12-10
        • 1970-01-01
        • 2015-04-29
        • 2013-11-04
        • 2013-11-15
        相关资源
        最近更新 更多