如何在 StoryBoard 上添加 Xib

在 1975 年的经典软件项目管理书籍《神话人月。Essays on Software Engineering》中,Fred Brooks 指出,无论选择哪种编程语言,一个专业的开发人员平均每天要写 10 行代码(LoC)。

StoryBoard 有利于节省代码行,提高效率,苹果在每次 WWDC 上都会大力推荐,并不断改进。

我不明白为什么还有很多团队负责人要求他们可怜的程序员用编程的方式来写 UIView。

也许他们认为有些 CustomViews 的重用性很强,如果将其粘贴到 StoryBoard 中,会造成多余的副作用。

所以,这个解决方案的主要思路是,将 CustomViews 凝聚到 Xib 中,然后添加到 StoryBoard 中。

这需要几个步骤,因为苹果并不直接支持它。

  1. 添加一个 IBDesignableCustomView.SwiftCustomView.Xib
  2. CustomView.xib->占位符->文件的所有者->自定义类设置为CustomView
  3. 以编程方式新建一个 CustomView 并从 CustomView.Xib 加载根视图
  4. 在 init 函数的CustomView上在水平和垂直中心添加宽度和高度相等的根视图
  5. 现在您可以将 View 拖到 StoryBoard,并将其类设置为CustomView,这可以生成快照以进行预览

但是 CustomView 的子视图(如 UIButton)无法连接到 ViewController@IBOutlet

Delegate or Block 可以解决这个问题。

至于我,我建议 Block 方式, 因为我用过 Delegate 半年了,发现

  • ViewController 会有太多 delegates
  • delegate = self 必须写 viewDidLoad 而有时 =nilviewDidDisappear

Block的代码会更少,更简单。

下面是例子,可能会减少你的时间。