2015-12-22 3 views
0

У меня есть UITableViewCell и добавьте UILabel на него. Я показываю значение на UILabel от UIPickerView. Я делаю эту задачу с этим кодом:Как добавить значение uilabel с новым значением из вида подборщика

(void)pickerView:(UIPickerView *)pickerView didSelectRow: (NSInteger)row inComponent:(NSInteger)component 
{ 
    NSLog(@"row selected:%ld", (long)row); 
    value = _countingarray[row]; 

    value = [NSString stringWithFormat:@"%d",[value intValue] + [_countingarray[row] intValue]]; 

    [self.mytableview reloadData]; 
    [self hidePickerView]; 
} 

, но когда я исполню его, UILabel стоимость увеличилась на других UITablViewCell тоже.

Можете ли вы мне помочь, как обновить значения uilabel в зависимости от выбранной ячейки. Это мой весь код для всех моих функций.

(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *identifier = @"Cell"; 

    UitableviewcellTableViewCell *Cell = [tableView dequeueReusableCellWithIdentifier:identifier forIndexPath:indexPath]; 

    if(position == indexPath.row){ 
     int row; 
     value = [NSString stringWithFormat:@"%d",[value intValue] + [_countingarray[row] intValue]]; 
     Cell.nameLabel.text = value; 
     NSLog(@"%@", value); 
    }else{ 
     Cell.nameLabel.text = @"value"; 
    } 
    NSLog(@"Position :- %ld %d", (long)indexPath.row, position); 

    return Cell; 
} 

это код ячейки таблицы, в котором я хочу обновить значение, и ниже код предназначен для просмотра.

(void)pickerView:(UIPickerView *)pickerView didSelectRow: (NSInteger)row inComponent:(NSInteger)component 
    { 

    NSLog(@"row selected:%ld", (long)row); 
    value = _countingarray[row]; 

    value = [NSString stringWithFormat:@"%d",[value intValue] + 
      [_countingarray[row] intValue]]; 

    [self.mytableview reloadData]; 
    [self hidePickerView];  
} 

ответ

1

На вашем didSelectRow выберите один массив и добавьте в него выбранное значение.

- (void)viewDidLoad { 
    [super viewDidLoad]; 
     NSMutableArray *arr1=[[NSMutableArray alloc]init]; 
     int index=-1; 
} 

- (void)pickerView:(UIPickerView *)pickerView didSelectRow: (NSInteger)row inComponent:(NSInteger)component 
{ 
    value = _countingarray[row]; 
    index=index+1; 
    [arr1 insertObject:value atIndex:index ]; 
    NSString *str = [arr1 valueForKeyPath:@"@sum.intValue"];//you will get the sum of all array objects 
    [self.mytableview reloadData]; 
    [self hidePickerView]; 

} 

и показать это значение str в таблице.

+0

Должен ли я объявить nsmutablearray в методе строки didseletect, потому что когда я объявил его методом viewdidload, он дает мне ошибку необъявленного идентификатора. –

+0

Могу ли я применить некоторую логику к ячейке для строки в методе указателя пути. –

+0

вы должны объявить его своим файлом .h. Корреспондент, это была моя ошибка. – BHUMICA

0

В методе строки PickerView DidSelect просто перезагрузить эту ячейку, который вы хотите вместо перезагрузки таблицы.

Используйте этот метод для перезагрузки

- (void)reloadRowsAtIndexPaths:(NSArray<NSIndexPath *> *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation NS_AVAILABLE_IOS(3_0); 

И принять массив, содержащий значения, которые вы хотите установить в каждой метки для cell.Also обновить этот массив после pickerDidSelect.

Надеюсь, что это решит вашу проблему.

+0

ok я попытался его реализовать –

+0

еще не работает –

+0

В чем проблема? – sourav

Смежные вопросы