У меня есть вопрос, который сводит меня с ума. Все дело в обновлении в реальном времени UITableViewCell со значением UISlider, который находится внутри другого UITableViewCell.
Проблема
Ячейка обновлена, но кажется, что размер метки в ячейке не соответствует размеру представленного значения. Я постараюсь объяснить лучше.
UISlider имеет минимальное значение -100 и максимальное значение 100. Таким образом, при первой загрузке TableView cell.detailText.text показывает, что 0,0% отображается нормально, но когда Я перемещаю ползунок, и значение становится больше, например 55,5%, метка не может содержать эти дополнительные символы и отображает «55 .....»
Вот как я создаю ячейку, которая содержит значение UISlider, создаю UISlider в методе делегата cellForRowAtIndexPath
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:ProductCellIdentifier] autorelease];
cell.textLabel.text=@"Performance";
cell.detailTextLabel.text = [NSString stringWithFormat:@"%.1f%%", slider.value];
cell.tag=1002;
Вот как я создаю de UISlider в методе cellForRowAtIndexPath:
cell = [[[UITableViewCellalloc] initWithFrame:CGRectZero reuseIdentifier:ProductCellIdentifier] autorelease];
slider = [[UISlideralloc] initWithFrame:CGRectMake(90, 12, 200, 25)];
slider.maximumValue = 100;
slider.minimumValue = -100;
slider.continuous = TRUE;
[slideraddTarget:self action:@selector(sliderChanged:) forControlEvents:UIControlEventValueChanged];
[cell.contentView addSubview:slider];
cell.tag=0;
[slider release];
И это то, что я делаю в методе sliderChanged, чтобы обновить ячейку.
UITableViewCell *celda= (UITableViewCell *)[[self tableView] viewWithTag:1002];
celda.detailTextLabel.text = [NSString stringWithFormat:@"%.1f%%", slider.value];
Я подозреваю, что решение заключается в использовании reloadData метода UITableView, но не уверен. Я попытался вставить self.tableView.reloadData
в метод sliderChanged, но я получил, что UISlider не двигается, и, наконец, я получил это исключение:
Завершение работы приложения из-за неперехваченного исключения «NSRangeException», причина: '- [NSCFArray objectAtIndex:]: index (0) за пределами (0)'
Заранее спасибо за помощь
Javi