如何使用用户修改的内容动态增长UITableView行

时间:2012-03-28 03:59:58

标签: ios objective-c uitableview cocoa-touch uikit

我问这个问题已经知道答案是“不,你不能”,但希望有人在这里有个好主意。

我有一个UITableViewCell的子类,它有一些不同的子视图,其中一个是我用户可编辑的UITextField。因此,textField自然会随输入的文本一起增长。

现在的问题是如何通过textField使tableview行增长。

我有各种不同大小的单元格,所以我知道如何使用- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath,但问题是我需要修改单元格已经在tableview中。

另请注意,之前提到的委托方法在数据源委托方法- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

之前调用

我想到了为用户编辑另一个视图然后将该数据放入我的数据模型然后我必须强制重新加载tableview。 (我可以重新加载某个单元格/行)

有趣的是,我认为苹果正在他们的iTunes U应用程序中做我想做的事情。当您点按作业时,它会展开。我认为他们正在使用tableviews吗?

我知道我有很多问题并在这里讨论,但我相信这些都是相关的,只是为了展示我所研究的内容。我只是在寻找你们其中一个人有天才的可能性。

希望这也可以帮助别人,因为这似乎是一个热门话题,但没有人好好问问题或得到好的答案。

1 个答案:

答案 0 :(得分:5)

实际上,这已被多次询问和回答 - 这并非不可能。搜索“UITableView自定义行高”或“UITableView多行UITextField”或类似内容,您将找到几个回答良好的问题。

你走在正确的轨道上 - 你需要在tableView:heightForRowAtIndexPath:中返回一个高度,即使在创建/配置单元格之前调用了该方法。这没关系...你只需要一种方法来计算那个高度而不需要单元格。其他答案参考-[NSString sizeWithFont:constrainedToSize:]及相关方法......这可以让您走上正确的轨道。

在编辑文本字段时更改高度不太明显,但this answer有密钥...如果您致电

[tableView beginUpdates];
[tableView endUpdates];

表视图不仅会再次向其委托人询问heightForRowAtIndexPath:并调整单元格的大小以匹配,它将以平滑的动画进行。