iOS Swift Xcode 故事板中视图控制器委托的 6 个关注点分离

iOS Swift Xcode 6 separation of concerns for view controller delegates in storyboards

我在学习 iOS 开发和 Swift 的过程中获得了很多乐趣,但对此有些烦恼。

我正在编写一个包含一堆控件的视图,而我的 UIViewController 由于它必须支持的所有委托协议而变得有点臃肿。所以我想分出一些代表团来分开classes。但是似乎没有任何方法可以将视图控件连接到情节提要中分开的 classes?

示例:我有:

class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource{
  ...code...
}

通过将连接器拖动到情节提要中视图顶部边缘的 ViewController 东西,很容易将选择器视图连接到此,如下所示:

现在我有:

class ViewController: UIViewController{
 ...code...
}

并在单独的文件中:

class PickerHandler: UIPickerViewDelegate, UIPickerViewDataSource{
  ...code...
}

但是,我无法将选取器视图的委托连接器拖到此 class,那么如何连接委托?

快速回答:喜欢 snowman4415。

Swift推荐方式:

class ViewController: UIViewController {
 ...code...
}

extension ViewController: UIPickerViewDelegate {
}

extension ViewController: UIPickerViewDataSource {
}

您可以将这些扩展放在任何您想要的地方。没有必要为此制作另一个 class,假设您只是不想让 class 变得太大。

此外,还有其他情况需要像您一样制作另一个 class,但它需要更多的工作,例如当您必须编写额外的 protocol 以便从 [= 委托时12=]回到ViewController(因为你不能直接在PickerHandlerclass中调用ViewController的实例)