gpt4 book ai didi

ios - 将 UITableViewCell 中的文本大写

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:37:33 24 4
gpt4 key购买 nike

我目前正在开发的应用程序的设计者突然想要将应用程序中每个表格 View 单元格中的文本大写。
在(几乎)每个表格 View 中,我都使用一个名为“NormalListCell”的自定义 UITableViewCell。 NormalListCell 有一个名为“mainLabel”的 UILabel 属性,这是我想要大写的属性。
一种方法是在任何地方都这样做:

//Previously: cell.mailLabel.text = _someLowerCaseString;
cell.mailLabel.text = [_someLowerCaseString uppercaseStringWithLocale:[NSLocale currentLocale]]];

但这似乎是最糟糕的方法,因为我必须手动检查每个使用 NormalListCell 的文件。此外,不能保证设计不会再次更改。

KVO 似乎是个不错的主意。

- (void)awakeFromNib {
[super awakeFromNib];
[self.mainLabel addObserver:self forKeyPath:@"text" options:NSKeyValueObservingOptionNew context:NULL];
}

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
if (object == self.mainLabel) {
[self.mainLabel setText:[change[@"new"] uppercaseStringWithLocale:[NSLocale currentLocale]]];
}
}

但这不会起作用,因为我正在观察“文本”属性并将其设置在 -observeValueForKeyPath: 中,会再次调用此方法。

我可以停止观察,设置标签的文本,然后再次将自己添加为观察者,但这似乎是一个非常老套的解决方案。

这是“正确”的解决方案吗?有更好的方法吗?

最佳答案

一种更好的方法是创建自定义标签并将其添加到您的自定义单元格中。

  1. 子类化 UILabel
  2. 覆盖setText方法
  3. 将此自定义标签添加到 NormalListCell

关于ios - 将 UITableViewCell 中的文本大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20943806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com