我有一个奇怪的问题:
我使用UIPickerView
来选择一些值。当选取一个值时,我想用pickerview中的值更新UITableView
中的一行。因此,我保存了对特定单元格的引用。
因此,当我在pickerview中选择一行时,我会在pickerview委托方法- didSelectRow...
中执行此操作
self.pickerviewCell.textLabel.text = [self.pickerViewDataSource objectAtIndex:row];
然后我用动画把pickerview解散了。但由于某种原因,在pickerview离开屏幕后,我看到行中的标签被更新为三个点...
,这表明文本对标签来说太长,然后在点消失并显示标签全文后一秒钟。文本字符串不太长,长度在3到5个字符之间,应该完全适合UITableViewCell
的textLabel。
有人知道线索吗?
对我来说,问题是我的字符串以n
结尾。这适用于UITableViewCellStyleDefault
,但当更改为UITableViewCellStyleSubtitle
时,字符串会被截断(无论字符串有多长,最后三个字符都将更改为...
)。从字符串中删除n
修复了它。
经过一番尝试和错误后找到了解决方案。
事实证明,由于该单元格是UITableViewCell
的自定义子类,我需要将实例变量引用到该自定义子类而不是UITableViewCell
超类。
所以我所做的就是从
@property (nonatomic, strong) UITableViewCell *cell
至
@property (nonatomic, strong) MyCell *cell
结果完美无瑕。不过行为很奇怪。但它是有效的。
编辑:
事实上我跑得太快了。仅仅将类更改为我的子类是不起作用的。相反,我注意到的是,如果在设置了self.pickerviewCell.textLabel.text
属性后,我调用[self.pickerviewCell.textLabel sizeToFit]
,但奇怪的是,在我的应用程序中的另一个视图控制器中,我可以执行上述操作,而不需要在UILabel
上调用- sizeToFit
以使其正确显示。