我可以直接编辑UITableView单元格的textLabel吗?

时间:2011-11-24 00:37:20

标签: iphone uitableview uilabel edit

好的,我知道这里似乎有很多关于这个主题的问题,但是我找不到任何我需要的东西。

我有一个UITableViewCell,我希望能够选择(通过didSelectRowAtIndexPath:处理触摸)然后通过允许用户开始编辑单元格textLabel的内容来响应该选择。我需要一个标签因为我需要多行文字。
当用户输入越来越多的文字时,我需要增加单元格的高度。

我是否需要继承UITableViewCell并拥有自己的标签或textView?或者我可以使用已存在的textLabel吗?

请指教!

3 个答案:

答案 0 :(得分:1)

我建议你做的,或者至少尝试做你最好的选择,就是为每个单元格创建一个文本字符串数组(NSString)。当然,您知道可以在特定点编辑数组,因此知道您选择的单元格可以让您知道要编辑的字符串。从这里编辑标签文本时,只需调用: [tableView reloadData]

它应该为你更新!

答案 1 :(得分:1)

我有适合您的解决方案,您需要什么。即使我遇到过这个问题&找到了解决方案。请查看此link。您需要在此示例上更多地工作以动态调整单元格

答案 2 :(得分:1)

  • 首先,您应该可以使用计算文本框架 NSString的sizeWithFont:constrainedToSize:lineBreakMode:方法。

  • 在你的UITableView委托工具中 tableView:heightForRowAtIndexPath:方法。计算高度 每个单元格中的文本,还包括填充和其他所有内容 可能需要。我也会缓存此值,直到文本更改为止。

  • UITableViewCell子类。这里有两个变体:

    1. 每次用户想要编辑文本时将UITextView添加到单元格,然后将其删除。
    2. 使用UITextView显示和编辑文本(它具有editable属性)。但我不确定它在桌子内会有多快,我还没有亲自测试过。
    3. 我在我的应用中使用了第一个变体。

    4. 您可以继承UITextView或使用其委托方法在用户输入内容时更新其高度。

    5. 将高度更改传播到UITableView委托。

调用以下代码更新动画细胞:

[self.tableView beginUpdates];
[self.tableView endUpdates];