У меня есть UITableView, состоящий из трех строк - каждая строка является полем данных на экране настроек. Когда пользователь щелкает строку, у меня появляется UIPickerView
для выбора значения. Я использую UITableViewCellStyleValue1
- левая сторона - это имя поля данных, а правая сторона (detailTextLabel
) должна быть значением, выбранным из средства выбора.
Я создал целевую ячейку для хранения выбранной ячейки. В моем средстве выбора я использую приведенный ниже код в методе didSelectRow
:
self.targetCell.detailTextLabel.text = @"TEST";
Что работает, однако у меня есть несколько проблем с презентацией. Первым было то, что текст detailTextLabel был белым (хотя API говорит, что он должен быть синим ??!?) Я исправил это с помощью:
self.targetCell.detailTextLabel.textColor = [UIColor blackColor];
Однако текст не отображается в ячейке, пока я не щелкну ячейку или другую ячейку. Поэтому я попытался добавить
[self.tableView reloadData];
Что позволяет обновить ячейку и получить текст метки, но также убирает выделение синего цвета, которое я хочу сохранить.
Если вы можете просмотреть этот код и сообщить мне самый простой способ получить приведенные ниже результаты при выборе значения в средстве выбора:
- ячейка
detailTextLabel.text
немедленно обновляется до выбранного
значение в черном цвете
- синяя подсветка активной ячейки сохраняется
Спасибо!
- (void)pickerView:(UIPickerView *)pickerView didSelectRow: (NSInteger)row inComponent:(NSInteger)component {
// Handle the selection
self.targetCell.detailTextLabel.textColor = [UIColor blackColor];
self.targetCell.detailTextLabel.text = @"TEST";
[self.tableView reloadData];
}
Отредактировано для добавления окончательного кода soluton:
Спасибо Чоуну за ответ - мой последний рабочий код:
- (void)pickerView:(UIPickerView *)pickerView didSelectRow: (NSInteger)row inComponent:(NSInteger)component {
// Handle the selection
self.targetCell.detailTextLabel.textColor = [UIColor blackColor];
self.targetCell.detailTextLabel.text = @"TEST";
NSIndexPath *path = [self.tableView indexPathForSelectedRow];
[self.tableView reloadData];
[self.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:path.row inSection:0] animated:NO scrollPosition:UITableViewScrollPositionNone];
}