【发布时间】:2015-08-23 14:01:19
【问题描述】:
我有两个数据模型。一份用于待办事项,一份用于已完成项目。在这两种模型中,它只需要项目的内容和完成时的标志。以下是代码:
对于待办事项:
class TodoList: NSObject {
var task: String
var completed: Bool
init(task: String) {
self.task = task
self.completed = false
}
}
对于已完成的项目:
class CompletedList: NSObject {
var task: String
var completed: Bool
init(task: String) {
self.task = task
self.completed = true
}
}
我想要实现的是,当待办事项列表中的项目标记为已完成时,它将从待办事项模型中删除并移动/复制到已完成的项目模型。我怎样才能让它工作?谢谢。
PS:这两个数据模型将共享一个带有分段控制的表格视图。
编辑:
也许我之前的陈述令人困惑。让我改写一下:
我设置了一个带有分段控制的 UITableView。
分段控件有两个部分,“待办事项”和“完成”。
选择“待办事项”时,表格视图将显示未完成的项目列表。选择“完成”后,表格视图将显示已完成的项目列表。
实现这一目标的最佳做法是什么?
【问题讨论】:
-
你倒退了。两个数据模型不会共享同一个表视图。数据模型必须对任何视图一无所知。视图需要了解数据模型。所以表格视图将使用两种数据模型(通过表格视图的
dataSource。 -
谢谢。我知道模型一定不知道视图。如何在 View 控制器中设置它以将已完成的项目从待办事项列表传递到已完成列表?
-
我将各种信息存储在自定义 UITableViewCells 中,因为我知道它会在单元格的整个生命周期内跟随单元格。
-
@Larcerax 我使用 BOOL 值设置模型。但我不知道如何显示它。你能告诉我如何只用一个数据模型来实现这一点吗?谢谢。
-
这假设您知道如何使用 UITableViews 来回折腾数组,但这是一项糟糕的任务,因此我避免了所有这些,并使用 Voided 块方法作为自定义单元格的属性然后以这种方式捕获触摸事件,然后它就成为您完全通过自定义单元对象控制的东西。
标签: ios swift uitableview uisegmentedcontrol