2012-02-25 52 views
4

我正在开发一个像twitter客户端iOS版本的项目。在设计tableview时,每个单元格都会改变高度以适应其内容(tweet)。在twitter类客户端重用UITableViewCell(每个客户端的自定义高度)

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

+1

基于必须出现在单元格中的内容,您是否在'heightForRowAtIndexPath:'中设置了单元格的高度? – jonkroll 2012-02-25 01:21:52

+0

@jonkroll是的,我已经做到了。我想知道resue单元格的高度是多变的吗? – ericyue 2012-02-25 02:08:31

+2

月光是正确的。无论重用单元的高度如何,都无关紧要。你想使用委托方法'heightForRowAtIndexPath'。如果它不改变高度,那么你做错了什么。如果你想要更好的答案,分享一些代码。 – dbrajkovic 2012-02-25 06:58:55

回答

3

是的,表编程是模型 - 视图 - 控制器方法真正有用的地方。如果你在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的文档可以是稀缺的(虽然我认为这是相当业余体校): 这将是基本环节为您提供:

UITableView Class Reference

UITableViewDataSource Protocol Reference

UITableViewDelegate Protocol Reference

Table View Programming Guide for iOS