我见过很多很多实施时,开发人员UITableViewDelegate和UITableViewDataSource直接调用cellForRowAtIndexPath:要么:
1)检索单元格以获取它们存储在单元格中的模型元素:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
MyCell *cell = (MyCell *)[tableView cellForRowAtIndexPath:indexPath];
int secretCode = cell.secretCode;
LaunchMissileViewController *vc = [[LaunchMissileViewController alloc] initWithSecretCode:secretCode];
[self.navigationController pushViewController:vc];
}
Run Code Online (Sandbox Code Playgroud)
2)尝试设置单元格样式(这有明显的问题,但似乎很常见):
MyCell *cell = (MyCell *)[self cellForRowAtIndexPath:indexPath];
// or [tableView cellForRowAtIndexPat:indexPath];
cell.backgroundColor = [UIColor greenColor];
Run Code Online (Sandbox Code Playgroud)
它是安全的,使毯声明说:"只有框架应该不断打电话cellForRowAtIndexPath:"?或者是否有一个人们可能自称的实际原因?
就个人而言,我认为没有好的案例可以直接直接调用tableView:cellForRowAtIndexPath:数据源.
对于情况#1,它只是糟糕的编码.单元格永远不应包含数据.数据源应该具有数据,因此从实际数据源而不是单元获取数据.
对于案例#2,您只需要更新可见单元格.为此,您可以使用该UITableView cellForRowAtIndexPath:方法.无需为单元调用数据源.
我尝试永远不要说"从不",但它应该是一个非常罕见的情况,你真正需要通过调用数据源方法来获取单元格.
| 归档时间: |
|
| 查看次数: |
3189 次 |
| 最近记录: |