У меня есть lable (quantitylbl) и степпер внутри динамической ячейки UITableView. Я могу обновить UILabel по изменению шагового значения, но когда я прокручиваю до тех пор, пока эта ячейка не выйдет из видимого экрана и не вернется назад, чтобы отобразить метку, то при изменении шагового параметра метка не будет обновляться. В журналах я вижу обновленное значение, но метка не обновляется. Помощь приветствуется. Вот код:После прокрутки UILabel не обновляется в UITableViewCell
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell;
UIStepper *stepper;
UILabel *quantitylbl;
int sectionCount = 0;
if ([indexPath section] == 1) sectionCount = 10; // Manage tags
switch ([indexPath row])
{
case 2:
cell = [self.tableView dequeueReusableCellWithIdentifier:@"Cell2"];
cell.textLabel.text = @"Quantity per day";
cell.selectionStyle = UITableViewCellSelectionStyleNone;
stepper =[[UIStepper alloc] initWithFrame:CGRectMake(200, 60, 40, 20)];
[stepper setStepValue:0.25];
[stepper addTarget:self action:@selector(stepperPressed:) forControlEvents:UIControlEventValueChanged];
stepper.tag = indexPath.section;
quantitylbl = [[UILabel alloc] initWithFrame:CGRectMake(160, 12, 40, 20)];
if ([indexPath section] == 0)
quantitylbl.text = [self.milk1 objectForKey:@"Quantity"]; //get value from dict
else
quantitylbl.text = [self.milk2 objectForKey:@"Quantity"];
[stepper setValue:[quantitylbl.text doubleValue]];
quantitylbl.tag = sectionCount + [indexPath row];
[cell setAccessoryView:stepper];
[cell addSubview:quantitylbl];
break;
}
- (IBAction)stepperPressed:(UIStepper *)sender
{
UILabel *label;
UITableViewCell* cell = [sender superview];
NSString* strval = [NSString stringWithFormat:@"%.2f",sender.value];
if (sender.tag == 0)
{
label = (UILabel *)[cell viewWithTag:2];
[self.milk1 setValue:strval forKey:@"Quantity"];
label.tag = 2;
}
else
{
label = (UILabel *)[cell viewWithTag:12];
[self.milk2 setValue:strval forKey:@"Quantity"];
label.tag = 12;
}
if (label != nil)
{
// I see correct value here, also label is updated correctly. But when I scroll the
// label out of screen and bring it back, the UILabel no more gets updated though
// I see correct values here.
label.text = strval;
}
}
Спасибо! Это решило мою проблему, а также намного более чистый код :) – 09apps