iPhone - 如何从UILabels的集合中进行选择?

时间:2014-03-26 01:35:56

标签: ios iphone objective-c cocoa-touch

我有一些UILabel,其中任何一个都会根据它们所代表的NSArray索引的索引进行更新。我想过按标签选择它们

self.displayLabel.tag = myArray[index];

但是这会将标记值更改为我的数组目前保存的内容

使用字典表示它提供的任何技巧而不是NSArray都无济于事,因为我仍然需要选择正确的匹配标签。这是我想要实现的效果。

self.|mySelectedLabel|.text = myArray[index];

我应该放入什么| mySelectedLabel |得到我正在寻找的那个?

在我的声望级别问我几乎感到羞耻,但这让我感到沮丧 每次搜索都会显示如何设置标签和更改,而不是选择

的过程

4 个答案:

答案 0 :(得分:1)

假设您已将标记设置为适当的索引以匹配您的标记  数组索引可以使用[self.view viewWithTag:index];

答案 1 :(得分:0)

为什么不设置标签:

self.displayLabel.tag = index;

此外,你可以循环一系列标签并找到合适的标签:

for (UILabel *label : labelArray) {
    if (label.tag == index) {
        label.text = @"I found you!";
    }
}

答案 2 :(得分:0)

您可以通过引用来引用特定的文本字段,而不是使用标记:

// Create an array to hold your textfields
NSMutableArray *textFields = [NSMutableArray array]

// Create your textfields and add them to the array
UITextField *textField;
for (NSUInteger idx = 0: idx++; idx < numberOfTextFieldsYouWant) {
    textField = [UITextField alloc] initWithFrame:<whateverYouWant>];
    [textFields addObject:textField];
}

由于您要将对象添加到数组中,而不是使用标记值0,1,2 ......您只需通过数组中的索引访问它

所以,对于你想做的事,你可以这样做:

textfields[index].text = myArray[index];

它更清晰,不依赖于魔术标签,并且您拥有一系列可以删除或在一个地方更改的动态文本字段。

我认为标签被大量滥用,在大多数情况下它们并不是必需的。

答案 3 :(得分:0)

只是让你知道我重新解决了这个问题,这最终对我有用,而不必使用数组 (通过无尽的实验,我有点碰到它,所以我不知道它是否构成了良好的技术)

与行李重量相对应的所需标签(可能的数量之一)显示正确的更新

- (IBAction)acceptWeight:(UIButton *)sender {
   int tempValue = (int) currentWeight;
  // current weight comes from a UISegementedController

   for (UILabel *labels in self.view.subviews) 
   {
      if (labels.tag == currentWeight) 
      {
         bags[tempValue]++;
         labels.text = [NSString stringWithFormat:@"%i",bags[tempValue]];
      }
   }
  totalKilo = totalKilo + (int)currentWeight;
  self.totalKilo.text = [NSString stringWithFormat:@"%d",totalKilo];
}