ios - 6 个单独的 UIViewController 还是只有一个具有不同数据源的 segue 决定?

标签 ios swift uitableview core-data nsfetchedresultscontroller

我正在用 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/

相关文章:

ios - 带有复选标记的自定义 UITableView 编辑样式 - iOS SDK

ios - ShareKit SHKFacebookSessionProxyURL

swift - 为 swift iOS 应用程序安装 cocoa pod 后找不到名为 AWSLex 的模块

swift - 是否可以(以编程方式)在 macOS 中为每个单独的 "space"/desktop 设置壁纸?

UITableCellView 内的 iOS scrollView

iphone - 从自定义 UITableViewCell 中调用模式窗口

ios - 移动 Safari Web App - 点击和手势 react 迟钝

ios - 将 subview 添加到 UITextView 并使用自动布局

iphone - 如何检测在 iphone 上加载 UIWebView 时发生的 url 重定向?

swift - 打印时如何去掉数组括号