【问题标题】:Why setting labels.text from NSMutableArray does not work?为什么从 NSMutableArray 设置 labels.text 不起作用?
【发布时间】:2016-01-10 18:28:49
【问题描述】:

以下代码

NSMutableArray *textLabels = [[NSMutableArray alloc] initWithObjects:cell.textLabel1.text, cell.textLabel2.text, cell.textLabel3.text, cell.textLabel4.text, cell.textLabel5.text, nil];
                    for (int i=0; i<json.count; ++i)
 {
   textLabels[i] = [NSString stringWithFormat:@"#%@",[json[i] valueForKey:@"text"]]];
 }

将正确的字符串值写入 textLabels 数组,但模拟器上的标签不会改变。为什么?

【问题讨论】:

  • json 是“ NSArray * ”,我是从后端获取的。
  • @luk2302 如果我写 cell.textLabel1.text = @"something"; ?
  • 实际尝试更新标签文本的代码在哪里?您发布的代码仅填充字符串数组。
  • 您应该将标签保存在数组中而不是文本中
  • UILabel *textLabel = (UILabel *)[cell viewWithTag:i]; textLabel.text = [NSString stringWithFormat...

标签: ios objective-c arrays json


【解决方案1】:

您似乎认为向标签询问其文本会返回对标签值的可更新引用,但事实并非如此。返回的字符串是一个不可变对象,您的代码只是将这些值替换为其他不可变值。

要更新标签,您应该在数组中保存对标签本身的引用,然后您可以索引到该数组并设置每个标签的文本。您不需要将任何文本存储在数组中。

您可以手动或使用IBOutletCollection 将标签添加到数组,具体取决于您的 UI 定义。

【讨论】:

    猜你喜欢
    • 2016-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    相关资源
    最近更新 更多