【问题标题】:iOS - UILabel in UITableViewCell erroneously truncates textiOS - UITableViewCell 中的 UILabel 错误地截断文本
【发布时间】:2012-08-16 23:25:19
【问题描述】:

我有一个奇怪的问题:

我正在使用UIPickerView 来选择一些值。当挑选值时,我想在UITableView中使用pickerview的该值更新一行。所以我保存了对特定单元格的引用。

因此,当我在pickerview 中选择一行时,我会在pickerview 委托方法- didSelectRow... 中执行此操作@

self.pickerviewCell.textLabel.text = [self.pickerViewDataSource objectAtIndex:row];

然后我用动画关闭了pickerview。但是由于某种原因,在pickerview关闭屏幕后,我看到行中的标签被更新为三个点...,这表明文本对于标签来说太长了,然后在点消失后一秒钟,全文显示标签的。文本字符串不会太长,它们的长度在 3 到 5 个字符之间,应该完全适合 UITableViewCell 的 textLabel。

有人知道吗?

【问题讨论】:

  • 你试过 NSLogging 在self.pickerviewCell.textLabel.text = [self.pickerViewDataSource objectAtIndex:row]; 之后的字符串长度吗?我猜你可能必须这样做[[self.pickerViewDataSource objectAtIndex:row] stringValue];

标签: ios cocoa-touch uitableview uilabel truncate


【解决方案1】:

对我来说,问题是我的字符串以\n 结尾。这适用于UITableViewCellStyleDefault,但是当更改为UITableViewCellStyleSubtitle 时,字符串被截断(无论字符串有多长,最后三个字符都更改为...)。从字符串中删除\n 修复了它。

【讨论】:

    【解决方案2】:

    经过反复试验,找到了解决方案。

    事实证明,由于单元格是 UITableViewCell 的自定义子类,我需要将实例变量引用到该自定义子类而不是 UITableViewCell 超类。

    所以我所做的只是从:

    @property (nonatomic, strong) UITableViewCell *cell

    @property (nonatomic, strong) MyCell *cell

    结果完美无缺。虽然很奇怪的行为。但它有效。

    编辑:

    实际上我在那儿太快了。仅将类更改为我的子类是行不通的。相反,我注意到有效的是,如果在设置 self.pickerviewCell.textLabel.text 属性后我调用 [self.pickerviewCell.textLabel sizeToFit] 但奇怪的是,在我的应用程序的另一个视图控制器中,我可以执行上述操作 而无需 需要调用 @ UILabel 上的 987654327@ 以使其正常显示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-04
      • 1970-01-01
      • 2013-12-23
      • 2012-07-18
      • 1970-01-01
      • 1970-01-01
      • 2015-05-09
      相关资源
      最近更新 更多