gpt4 book ai didi

ios - 将对象/结构传递给 UITableViewCell,或在 configureCell :atIndexPath:? 中配置单元格

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:13:18 27 4
gpt4 key购买 nike

我需要使用模型对象的内容配置自定义表格 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/

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