【问题标题】:How to modify color of label in IBOutletCollection如何修改 IBOutletCollection 中标签的颜色
【发布时间】:2014-10-30 08:33:55
【问题描述】:

我的问题是 - 如何修改

中每个标签的背景颜色、文本颜色等任何颜色
IBOutletCollection(UILabel) NSArray *smallLabels 

我尝试了所有方法来使用索引访问数组的每个元素。在我的例子中,我有 10 个标签,每个标签的编号从 1 到 10。

到目前为止,我所做的只是将每个标签连接到 IBOutletCollection,但我知道我从未在代码中初始化我的数组。

提前致谢。

【问题讨论】:

  • 是否调用 -(void)awakeFromNib 方法?
  • 当您使用数组作为 IBOutletCollection 时,它会自动初始化并填充视图。您应该能够像所有其他插座一样在 viewDidLoad 中访问它。
  • Astoria,是的,但我没有在其中添加任何代码。为什么?
  • @Imotep ,我确实使用方法 objectAtIndex 访问每个元素,但我无法修改颜色。我的代码如下所示: [[_smallLabels objectAtIndex:1] backgroundColor] = [UIColor greenColor];它给出了一个错误。我还是不知道。
  • 错误是:表达式不可赋值。无论如何,我在下面找到了解决方案。谢谢大家!

标签: ios objective-c nsarray iboutletcollection


【解决方案1】:

请试试这个

for (UILabel *myLabel in self.smallLabels) 
{
  myLabel. backgroundColor = [UIColor greenColor];
}

【讨论】:

  • 我所有的标签现在都是绿色的。非常感谢!
  • 为了清楚起见,您使用 [[_smallLabels objectAtIndex:1] backgroundColor] 得到的错误是,当您从 NSArray 获取对象时,它是一个 id。由于 id 对象没有 backgroundColor 属性,编译器会引发错误。通过使用 foreach 而不是经典 for,您可以告诉编译器您期望的对象是 UILabel,它确实具有 backgroundColor 属性。您也可以这样解决问题: [((UILabel*)[_smallLabels objectAtIndex:1]) backgroundColor]
  • 你告诉IB这是一个UILabel的集合,它只允许你给这个集合添加标签,所以你不必检查类。
【解决方案2】:

好的。我一直在思考一整天,最后我找到了最适合我的解决方案。 正如我所说,我需要访问每个元素,而不是整个数组。

代码:

[[_smallLabels objectAtIndex:1] setBackgroundColor:[UIColor greenColor]];

【讨论】:

    猜你喜欢
    • 2020-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多