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

标签 ios objective-c uitableview cocoa-touch uikit

我问这个问题时已经知道答案是“不,你不能”,但希望有人有一个绝妙的主意。

我有一个 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/

相关文章:

iphone - 在 UITabbar Controller 中使用 MFMailController

ios - 我如何在 MKmapView 中拖动我的注释,就像 Google Pin Drop 和 Dragging :iOS

ios - 如何重构对象数组

ios - 状态栏、导航栏边距

ios - Objective-C设置bundle设置值

ios - 在 UITableViewCell 中扩展 UITextView

ios - cellForRowAtIndexPath 和过滤数据

ios - 在 Swift 中的自定义单元格之间切换

ios - 使用_框架!在 cocoapods 中进行分析

objective-c - 是否有任何函数可以检索与 NSFileSystemFileNumber 关联的路径?