gpt4 book ai didi

ios - UITableViewCell 更新模型的正确 MVC 方法?

转载 作者:行者123 更新时间:2023-11-28 15:02:24 24 4
gpt4 key购买 nike

我是 MVC 的新手,我有一个关于模型和 View 的问题。我有一些内容 View ,允许用户点击收藏该内容。这发生在 View 中,我需要用新信息更新数据模型。在我看来,简单的方法是在每个单元格上都有一个 Note 属性,然后当在 Controller 中点击该单元格时,我可以调用 addFavoriteNoteremoveFavoriteNote DataSource 上使用与该单元格关联的注释。但是,Note 是模型中的一个类,因此我认为在 UITableViewCell 中包含 Note 属性是不正确的。这在 MVC 中是错误的吗?如果是这样,什么是面向 MVC 的方法?

class Note: Comparable {
var content: String!
var creationDate: Date!
var author: Person!
init(content: String, creationDate: Date, author: Person) {
self.content = content
self.author = author
self.creationDate = creationDate
}
convenience init(author: Person) {
self.init(content: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed in efficitur nulla. Suspendisse facilisis tincidunt dictum. Praesent bibendum efficitur lectus vitae imperdiet. Sed odio est, fermentum et turpis vel, pellentesque volutpat magna. Aliquam iaculis libero at dignissim rutrum. Phasellus luctus elementum eros, gravida consequat tellus dignissim ultricies. Ut consectetur ut ante imperdiet molestie. Aliquam blandit, nulla eu egestas accumsan, diam justo varius augue, vel pellentesque felis tortor in orci. In nunc erat, luctus a mauris in, molestie blandit lorem. Vestibulum cursus, ligula sed lobortis vulputate, mauris eros finibus dui, id pretium lacus tortor eu erat. Curabitur pretium, ante in pellentesque vehicula, metus quam interdum leo, faucibus facilisis tellus massa a turpis. Pellentesque sit amet est sem. Vestibulum posuere luctus libero pretium faucibus", creationDate: Date(), author: author)
}
static func <(lhs: Note, rhs: Note) -> Bool {
return lhs.creationDate < rhs.creationDate
}

static func ==(lhs: Note, rhs: Note) -> Bool {
return lhs.creationDate == rhs.creationDate
}
}

class DataSource: NSObject {
private var favorites: [Note] = []

func addFavoriteNote(note: Note) {
favorites.append(note)
}

func removeFavoriteNote(note: Note) {
if let index = favorites.index(of: note) {
favorites.remove(at: index)
}
}

//...more stuff
}

最佳答案

你是正确的,你不应该让细胞更新模型。您的单元格应将检查/取消检查事件通知 View Controller 。这将使用委托(delegate)模式或使用闭包来实现。 View Controller 将是委托(delegate)或提供在单元格中发生事件时调用的闭包。作为 Controller , View Controller 可以通过根据需要更新模型来处理此事件。

Controller 为 View (在本例中为单元格)提供刚好足以显示自身的数据。

Controller 处理来自 View (例如单元格)的事件,这些事件导致模型被更新。

Controller 处理模型事件并告诉 View 根据更新的数据进行更新。

关于ios - UITableViewCell 更新模型的正确 MVC 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48779066/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com