2015-10-17 5 views
0

Я создаю приложение, в котором я создаю список представлений, используя «for loop», и каждое представление содержит несколько ярлыков и pickerView. когда я нажимаю и выбираю любое значение из pickerView, моя uilabel обновляется, но когда я нажимаю на любой другой файл pickerview и выбираю другое значение, оно обновляется до каждого предыдущего ярлыка. Таким образом, в каждом UILabel отображается только последнее значение выбора.Заполнение данных по UIlabel через picker View

Я знаю причину, по которой это происходит, потому что я создал этот UILabel как свойство и доступ через «я». Но если я не получаю доступ к этому пути, то как обновить значение этой метки.

Пример кода:

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

Вы сказали, «когда я нажимаю и выбрать любое значение из UILabel получает но по мере того, как я нажимал на любой другой выбор и выбирал другое значение, он обновляется до каждого предыдущего ярлыка ». Это совершенно не имеет никакого смысла. Я бы зашел так далеко, чтобы назвать это «[** салатом ** **] (https://en.wikipedia.org/wiki/Word_salad)». –

ответ

0

Из того, что вы описали, все ваши ярлыки имеют одинаковую ссылку. Чтобы устранить эту проблему, вам понадобится способ сохранения отдельных ссылок на ярлыки, например указатели в C.

Я бы предложил иметь массив меток вместо использования только self.issueLabel. Свойство нужно будет добавить в класс, такие как:

@property NSMutableArray *issueLabels; 

После инициализации этикетку, добавить его в массив, как это в ваш цикл:

[self.issueLabels addObject:issueLabel]; 

индексов в arrayLabels затем должен соответствовать индексам в self.returnItemsArray.

Тогда в picker:closedWithSelectedIndex:, метки могут быть извлечены из массива, используя что-то вроде:

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

и обновляется с помощью

[issueLabel setText:[[_sizeDictionary objectForKey:selectedVar]uppercaseString]]; 
Смежные вопросы