我正在开发一个像twitter客户端iOS版本的项目。在设计tableview时,每个单元格都会改变高度以适应其内容(tweet)。在twitter类客户端重用UITableViewCell(每个客户端的自定义高度)
但是我遇到了一个问题:当前屏幕的单元格高度工作正常,但向下滚动时,新单元格会重用旧单元格的高度。
我正在开发一个像twitter客户端iOS版本的项目。在设计tableview时,每个单元格都会改变高度以适应其内容(tweet)。在twitter类客户端重用UITableViewCell(每个客户端的自定义高度)
但是我遇到了一个问题:当前屏幕的单元格高度工作正常,但向下滚动时,新单元格会重用旧单元格的高度。
是的,表编程是模型 - 视图 - 控制器方法真正有用的地方。如果你在tableView:didDeselectRowAtIndexPath:
之类的地方改变你的细胞高度,你可能会感觉它有效 - 但事实并非如此。你可以在这个方法中做的是修改你的数据并重新加载表(或其中的一部分)。
正如在评论中提到以上,你必须:
在
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
为每个单元格正确的高度
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
提供正确的观点(小区)Whenewer你想要进行一些更改,您应该修改model
(或保留您的内容相关数据的适当对象)中的数据,然后调用其中一个UITableView's reload
部门首长,可能是:
- (void)reloadData
- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation
Apple的文档可以是稀缺的(虽然我认为这是相当业余体校): 这将是基本环节为您提供:
UITableViewDataSource Protocol Reference
基于必须出现在单元格中的内容,您是否在'heightForRowAtIndexPath:'中设置了单元格的高度? – jonkroll 2012-02-25 01:21:52
@jonkroll是的,我已经做到了。我想知道resue单元格的高度是多变的吗? – ericyue 2012-02-25 02:08:31
月光是正确的。无论重用单元的高度如何,都无关紧要。你想使用委托方法'heightForRowAtIndexPath'。如果它不改变高度,那么你做错了什么。如果你想要更好的答案,分享一些代码。 – dbrajkovic 2012-02-25 06:58:55