- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我需要使用模型对象的内容配置自定义表格 View 单元格。哪个是首选的设计模式?我不是在寻找“正确”的答案,只是对利弊的良好讨论。
1)在configureCell:atIndexPath:?中手动配置cell
- configureCell:atIndexPath:
{
myCell.field1 = modelObject.field1 ;
myCell.field2 = modelObject.field2 ;
}
2) 只需对自定义单元格进行编码以接受模型对象并将模型对象批量传递给 configureCell:atIndexPath:? 中的单元格
- configureCell:atIndexPath:
{
myCell.model = modelObject ;
}
根据Law of Demeter ,也许 (1) 更好。但是,当单元格需要处理用户操作时,tableview 是更合适的 Controller ,还是单元格本身(将单元格用作 ViewModel )?我认为后者绝对可以使代码更清晰:
1) TableView 作为 Controller 的行为
// tableview
- configureCell:atIndexPath:
{
myCell.field1 = model.field1 ;
myCell.button.delegate = myDelegate ; // have to define MyDelegate protocol
}
// Call behavior in cell
[self.button.delegate delegateCall] ;
// delegate
- (void) delegateCall
{
// find out which cell was manipulated
// find the object associated with the table cell
[theFoundModelObject myBehavior] ;
}
2) 单元格作为 ViewModel 的行为:
- configureCell:atIndexPath:
{
myCell.model = modelObject ; // cell has direct access to model behavior
}
// Call behavior in cell
[self.model myBehavior] ;
最佳答案
我更喜欢创建自定义单元格子类并将整个模型对象传递给它以配置自身的方法。
如果您稍后决定单元格需要使用模型中的额外字段并让您自由更改单元格的视觉布局和模型的内部结构,而无需更新 View Controller ,它会非常灵活。
关于ios - 将对象/结构传递给 UITableViewCell,或在 configureCell :atIndexPath:? 中配置单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8996671/
我已经实现了一个带有一些自定义单元格的 UITableView,用于验证 UITextFields 和日期选择器。我想做一项简单的任务,但我不知道为什么它不起作用。我只想更改 UILabel 文本属性
我尝试将 RxSwift/RxDataSource 与 TableView 一起使用,但无法使用现有函数分配 configureCell。代码如下: import UIKit import RxSwi
我正在制作一个应用程序,当您选择一个单元格时,您会被转到一个新的阅读 View 。您点击的单元格对应于核心数据存储中的一个对象(通过 NSFetchedResultsController),并且该对象
对于 tableviewcontroller,我使用 cellforrowatindexpath 来配置单元格。 但是,当更改核心数据中的某些内容时,委托(delegate)方法controllerD
我正在尝试学习 Swift,并决定使用 2015 年出版的“Swift for Dummies”。书中使用的示例代码适用于 XCode 6.X,但我使用的是 Xcode 7.2.1。 第四章Maste
我需要使用模型对象的内容配置自定义表格 View 单元格。哪个是首选的设计模式?我不是在寻找“正确”的答案,只是对利弊的良好讨论。 1)在configureCell:atIndexPath:?中手动配
我是一名优秀的程序员,十分优秀!