4

我正在开发一个类似 twitter 客户端 iOS 版本的项目。在设计表格视图时,每个单元格都会更改高度以适应其内容(推文)。

但是我遇到了一个问题:当前屏幕的单元格高度效果很好,但是向下滚动时,新单元格会重用旧单元格的高度。

4

1 回答 1

3

是的,表编程是模型-视图-控制器方法真正有用的地方。如果你在某个地方改变你的单元格高度,tableView:didDeselectRowAtIndexPath:你可能会觉得它有效 - 但它没有。您可以在此方法中执行的操作是修改数据并重新加载表(或其中的一部分)。

如上面评论中所述,您必须:

为每个单元格提供正确的高度

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

在中提供正确的视图(单元格)

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

当您想要进行一些更改时,您应该修改您的数据model(或保存与内容相关的数据的适当对象),然后调用其中一种UITableView's reload方法,可能:

- (void)reloadData
- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

Apple 的文档可能很少(尽管我认为它非常专业):这些将是您的基本链接:

UITableView 类参考

UITableViewDataSource 协议参考

UITableViewDelegate 协议参考

iOS 表视图编程指南

于 2012-02-25T12:12:36.307 回答