我正在创建一个应用程序,我使用“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]];
}
}
如果需要任何其他信息,请与我们联系。
答案 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]];