通过picker View在UIlabel上填充数据

时间:2015-10-17 21:00:43

标签: ios objective-c iphone

我正在创建一个应用程序,我使用“for循环”创建一个视图列表,每个视图都包含很少的label和pickerViews。当我点击并从pickerView中选择任何值时,我的uilabel会更新,但当我点击任何其他选择器视图并从中选择不同的值时,它会更新到之前的每个标签。因此,通过这种方式,每个UILabel中只显示最后一个选择器值。

我知道它发生的原因是因为我已经将UILabel创建为属性并通过“self”访问。但是,如果我不以这种方式访问​​,那么如何更新该Label的值。

示例代码:

for (NSMutableDictionary *itemDict in self.returnItemsArray ) {
   self.issueLabel = [[TTTAttributedLabel alloc] initWithFrame:CGRectMake(18, shipmentY+3, 270, 20)];
            [_issueLabel setNumberOfLines:0];
            [_issueLabel setTextColor:LR_darkgray_color];
            [_issueLabel setFont:[UIFont systemFontOfSize:15]];
            [_issueLabel setTextAlignment:NSTextAlignmentLeft];
            [_issueLabel setTag:index];
            [_issueLabel setText:@"Size Change"];
            [returnOrderInfoView addSubview:_issueLabel];
}

-(void)picker:(LRPickerView *)picker closedWithSelectedIndex:(NSInteger)index{

  if (picker.type == SIZE_PICKER){
    [self.issueLabel setText:[[_sizeDictionary objectForKey:selectedVar]uppercaseString]];
}
}

如果需要任何其他信息,请与我们联系。

1 个答案:

答案 0 :(得分:0)

根据您的描述,您的所有标签都具有相同的参考。要解决此问题,您需要一种维护单独标签引用的方法,例如C中的指针。

我建议使用标签数组而不是仅使用self.issueLabel。需要将属性添加到您的类中,例如:

@property NSMutableArray *issueLabels;

初始化标签后,在for循环中将其添加到数组中:

[self.issueLabels addObject:issueLabel];

issueLabels数组中的索引应该与self.returnItemsArray中的索引相对应。

然后在picker:closedWithSelectedIndex:中,可以使用以下内容从数组中检索标签:

TTTAttributedLabel *issueLabel = ((TTTAttributedLabel *)self.issueLabels[index]);

并使用

进行更新
[issueLabel setText:[[_sizeDictionary objectForKey:selectedVar]uppercaseString]];