故事板与旧的XIB方式

我是iOS新手,想知道哪个是最好的学习。 我已经阅读了一些这里的答案,所以有些人会说使用故事板,别人会说先学习XIB。 学XIB有什么好处吗? XIB更容易理解,并将帮助故事板?

你可以用故事板做的事情,你不能用笔尖做。 故事板允许您在视图控制器之间创build轮廓,并且可以让您devise表格视图单元格。

有些事情你可以用一个笔尖做,你不能用故事板做。 在笔尖中,您可以创build对文件所有者占位符的引用。 您可以创build多个顶级视图,编辑它们并在它们之间创build连接。 看到这个答案为什么你想这样做的例子。 您可以添加外部对象占位符(一个很less使用的function)。

故事板有一个缺点,就是他们收集了大量不同的,松散相关的对象到一个大文件中。 如果您正在与几个开发人员一起开发一个项目,那么如果您使用的是故事板,则与使用xib文件相比,您将更有可能遇到合并冲突。

你肯定应该在某个时候了解一下笔尖。 无论你想从他们开始还是从一个故事板开始可能不是太重要。 只要find你喜欢的一些教程,并通过它们使用他们使用的任何types的文件(笔尖或故事板)。

学习这两种方法都有好处。

除了xib方法的历史价值之外,xib还提供了模块性。 也许你有一个代码库或希望分享一个有用的小部件。 采用xib方法将有助于共享和重用。

xib方法还允许您在自己的代码方面有更大的灵活性。 例如,iOS 5包含一个UITableView和Accessibility / VoiceOver支持的错误,这会导致-dequeueReusableCellWithIdentifier:尽pipe有其他文档logging,请返回nil (请参阅此博客文章以获取更多详细信息)。 从xibdynamic加载表格视图单元提供了解决这个bug的能力。

尽pipeStoryboard中的表格和表格单元支持非常好,并且为大多数人需要在表格中进行的操作提供了支持,但有时您必须在行外进行着色,可能需要大量不同的单元格,并且再次从xibdynamic加载你的解决scheme

Storyboard的一大优势是能够查看整个应用程序的GUIstream程。 缩小,你可以看到所有的东西互连和stream动。 使用xibs,模块化很好,但想象一切如何连接和stream动在一起更困难。 这对你自己来说可能是一个有用的function,或者如果你有一个更大的团队来分享,让其他人看到应用程序如何stream动。

这两种方法都是有价值的,而且了解两者都是很好的,所以你可以为你的任务select最好的工具。

更新2014-10-06 – 自从我写了上面的内容,我已经参与了更多的项目。 一些用xib,一些可以用故事板。

故事板已经成熟了很多(我们现在在Xcode 6上),而且它们非常棒。 我真的很喜欢在xib方法中更复杂的故事板中可以做更多的事情。 几个例子:

一个是在使用UITableViewUICollectionView时,可以直接在故事板中使用原型单元。 很多好的和简单的设置,大部分繁重的工作可以放在故事板上,less一些代码。 这很好。 试图用xib方法做到这一点肯定是可行的,但是要做到这一点还有很多工作要做。

另一个是你可以很好地在UIViewController和常规的segues之间转换,然后返回unwind segues。 在故事板中,只需最less的代码即可。 它太方便了

但是还有一件事情是为了我在合作环境中使用它们。 这只是不会融合。 而在某些方面,即使你在一个> 1人以上的团队中工作,也是如此。 如果你自己利用版本控制,为自己的个人工作stream程使用一个良好的分支和合并模型,那么可能会有一些时间需要在某个分支中进行一些改变,哦,痛苦。 对我来说,这是杀死故事板的东西。

随着时间和工作的发展,我为自己find的是故事板对于原型devise来说非常棒。 让事情快速进行的能力是故事板的巨大好处。 使用它们的速度很快。 但速度是成本。 当谈到为某个项目编写“真实”的代码时,我只想坚持使用xibs,因为虽然这可能是更多的工作,但是这是一个更灵活的途径,在大型团队中或者随着时间的推移会变得更好。

更新2015-04-07另一个更新,因为过去几个月的项目迫使我使用故事板,这提供了更多的见解。

首先,有些事情会要求一种或另一种方法。 例如,显然在处理xib中的大小类时存在一些边界案例错误,这些大小类在故事板中并不存在。 所以,如果你受到虫子的影响,那可能会以某种方式强迫你的手。 另一个要记住的故事板通常工作在UIViewController级别,所以如果你需要做一些像加载一个UIViewUICollectionViewCell东西,这可能会更好地由一个xib服务。

其次,我不知道为什么起初我不这样做,但没有什么需要你为整个项目使用一个单独的故事板! 我认为故事板的性质使得人们可以以这种方式来吸引人,但是我们不得不记住任何(我知道的)任务。

我发现的作品很好,通常是每个故事板上的每个“视图分组”。 也就是说,你的ViewController往往是孤立的,每个故事板(或xib)最多只有1个。 但是你可能会遇到这样一种情况:你有两个紧密相关的ViewController,把它们放在同一个故事板上是有道理的,特别是因为你可以很容易地在它们之间挂钩,比如segues。

多个故事板的主要优点? 在团队中工作。 这样,弗雷德可以在他的故事板上工作,威尔玛可以在故事板上工作,并且没有合并问题或工作协调的强烈担忧! 使用多个故事板(每个故事板通常为1个ViewController)对于在多人开发团队中使用故事板提供了巨大的帮助。

很明显,苹果希望我们更喜欢故事板,而且我现在更多地拥抱它们。 使用多个故事板,但在需要时仍然使用xib,现在工作得相当好。

更新2015-09-21现在苹果发布了Xcode 7 ,更有理由采用故事板,苹果正在努力克服这些缺点。

最重要的改进是故事板参考 ,它允许您在一个故事板中创build对另一个故事板的引用。 制作起来很简单,现在你可以有跨剧情节(入口和出口)。 我已经在一个新的项目上使用了几次,这只是一个喜悦。

另一个改进是你可以在故事板中创build独立的UIView类。 但是,在写这篇文章的时候,我的结果是不一样的。 简单的情况下,确定,但一些更复杂的东西没有。 例如,我有一个UITableView在其中的UITableView 。 由于它是一个带有5个静态单元格的简单表格,我只是将5个UITableViewCell实例化为故事板中ViewController的一部分。 似乎工作,但在运行时,实际上没有什么会加载和显示; 把UITableViewCell移到一个xib中,一切正常。 我不确定我是否做错了什么,或者可能是什么,所以YMMV。 但是,即使只有一些怪癖,我相信苹果公司将会解决这个问题,然后另一个阻止故事板的障碍将会消失。 我会说,如果你需要这样的支持,你应该尝试一下,看看它是如何为你服务的。 有很大的希望

越来越多,故事板正在成型为优秀。