我问这个问题时已经知道答案是“不,你不能”,但希望有人有一个绝妙的主意。
我有一个 UITableViewCell 的子类,它有几个不同的 subview ,其中一个是用户可编辑的 UITextField。因此,textField 自然会随着输入的文本而增长。
现在的问题是如何让 tableview 行随着 textField 增长。
我有各种不同大小的单元格,所以我知道如何使用 - (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
但问题是我需要在单元格已经在 TableView 中之后修改。
另请注意,前面提到的委托(delegate)方法在数据源委托(delegate)方法之前被调用 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
我曾想过只拉出另一个 View 供用户编辑,然后将该数据放入我的数据模型中,然后我将不得不强制重新加载 TableView 。 (我可以只重新加载某个单元格/行吗)
有趣的是,我认为苹果在他们的 iTunes U 应用程序中正在做我想做的事情。当您点击一项任务时,它会展开。我认为他们正确地使用了表格 View ?
我知道我在这里有很多问题和谈话,但我相信它们都是相关的,只是为了展示我的研究成果。我只是在寻找你们中的一个有天才的可能性。
希望这也能对其他人有所帮助,因为这似乎是一个热门话题,但没有人很好地提出问题或得到好的答案。
最佳答案
实际上,这个问题已被多次询问和回答——这并非不可能。搜索“UITableView custom row height”或“UITableView multi line UITextField”或类似内容,您会发现几个很好回答的问题。
您走在正确的轨道上——您需要在 tableView:heightForRowAtIndexPath:
中返回一个高度,即使在您创建/配置单元格之前调用了该方法。这没关系......你只需要一种方法来计算该高度而无需单元格。其他答案引用 -[NSString sizeWithFont:constrainedToSize:]
和相关方法......这应该让你走上正轨。
在编辑文本字段时更改高度不太明显,但是 this answer有 key ...如果你打电话
[tableView beginUpdates];
[tableView endUpdates];
表格 View 不仅会再次向其代理询问 heightForRowAtIndexPath:
并调整单元格的大小以匹配,它还会以流畅的动画来完成。
关于ios - 如何使 UITableView 行随用户修改的内容动态增长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9900942/