【问题标题】:Can I edit the UITableView cell's textLabel directly?我可以直接编辑 UITableView 单元格的 textLabel 吗?
【发布时间】:2011-11-24 00:37:20
【问题描述】:

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

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

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

请指教!

【问题讨论】:

    标签: iphone uitableview uilabel edit


    【解决方案1】:

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

    它应该会为你更新!

    【讨论】:

    • 感谢您的回答。那么我应该如何让键盘出现并让用户编辑 textlabel 内容?
    • 这取决于您希望如何以美观的方式处理您的应用程序。就我个人而言,我会抛出一个占据屏幕上半部分的 UITextView 并将其分配为成为FirstResponder 以在下半部分显示键盘。仅当您在表格中选择一个单元格时才使 UITextView 可见,并且当在键盘上按下“完成”按钮时,有一种方法可以 resignFirstResponder 并隐藏您的 UITextView。
    【解决方案2】:

    我有适合你的解决方案,你到底需要什么。即使我也遇到了这个问题并找到了解决方案。检查此link。您需要在此示例上进行更多工作以动态调整单元格大小

    【讨论】:

      【解决方案3】:
      • 首先,您应该能够使用 NSString 的sizeWithFont:constrainedToSize:lineBreakMode: 方法。

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

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

        1. 每次用户想要编辑文本并在之后将其删除时,将 UITextView 添加到 Cell。
        2. 使用 UITextView 显示和编辑文本(它具有editable 属性)。但我不确定它在桌子内的速度有多快,我没有亲自测试过。

        我在我的应用程序中使用第一个变体。

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

      • 将高度变化传播到您的 UITableView 委托。

      调用以下代码更新单元格动画:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-03-10
        • 2023-03-25
        • 1970-01-01
        • 2020-10-17
        • 2014-05-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多