我正在用 Swift 构建一个 iOS 应用程序,它的起始页有 6 个按钮。这些按钮中的每一个都将连接到一个 TableView Controller ,其数据由 NSFetchedResultsController
管理(应用程序使用核心数据)。现在,我可以看到创建 6 个 UITableViewControllers
很容易,但是我想知道将每个按钮发送到同一个 UITableViewController
并仅更改数据是否更明智通过在 prepareForSegue
方法中设置某种标志来加载/管理?
此处的最佳做法是什么?拥有 6 个 tableViewController
似乎很疯狂,每个都由它自己的 NSFetchedResultsController
支持,因为每个所需代码的大部分都是可重用的,并且可以被子类化并多次使用。
最佳答案
如果您可以使用单一代码库以支持所有六个 View Controller 的方式编写单个 View Controller ,那么重用单个 UITableViewController
就非常有意义。其他方法包括
- Composition - 为数据源创建一个类,在打开 TableView 之前配置它,并在 segue 上将其传递给 TableView
- 子类化 - 制作一个抽象的基础 View Controller ,并将其扩展六次。覆盖一两个抽象方法以减少重复量
- Helper - 创建一个类,其中包含在六个 View Controller 之间共享的所有可重用逻辑,并从六个非常滑动的 Controller 调用其方法。
您要避免的一件事是这样的代码:
if (viewControllerType == ViewControllerOne) {
doSomethingSpecial()
} else if (viewControllerType == ViewControllerTwo) {
doSomethingElseSpecial()
} ... // and so on
当您拥有这样的链时,您就知道您已经错过了子类化的机会。
关于ios - 6 个单独的 UIViewController 还是只有一个具有不同数据源的 segue 决定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35852326/