Как выделить строку в UITableView

Код ниже, кажется, не имеет никакого эффекта. Я хочу, чтобы он был высокоэластичным, так же, как он выделяется при нажатии на строку

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{
   ...
   [cell.textLabel setHighlighted:YES];


   return cell;
}

Ответ 1

Эта строка обработает перекраску ячейки, метки и аксессуара для вас:

[tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];

Ответ 2

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

 [tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];

Однако вы должны быть осторожны, чтобы не вызвать этот метод слишком рано.

В первый раз, когда контроллер вида, содержащий указанный tableView, initialized, самый ранний, который вы должны назвать этим методом, находится в пределах viewDidAppear:.

Итак, вы должны сделать что-то вроде этого:

- (void)viewDidAppear:(BOOL)animated
{
   NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0]; // set to whatever you want to be selected first 
   [tableView selectRowAtIndexPath:indexPath animated:NO  scrollPosition:UITableViewScrollPositionNone];
}

Если вы попытаетесь поместить этот вызов в viewDidLoad, viewWillAppear: или любые другие вызовы жизненного цикла раннего просмотра, это, скорее всего, не сработает или будет иметь нечетные результаты (например, прокрутка в нужную позицию, но не выбор ячейки).

Ответ 3

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:1 inSection: 0];

[tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];

обычно работает

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

(вы указываете представление, выбирая контроллер табличного представления в окне инспектора интерфейса и перетаскивая розетку для "просмотра" в вид таблицы, в который вы хотите сделать выбор).

Ответ 4

- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath {
   return YES;
}

- (void)tableView:(UITableView *)tableView didHighlightRowAtIndexPath:(NSIndexPath *)indexPath {
  // do something here
}

Попробуйте следующее:)

Ответ 5

Вы можете использовать

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{
   ...
   [cell.textLabel setHighlighted:YES];


   return cell;
}

Ответ 6

У вас есть два варианта. Либо используйте вид таблицы:

[tableView selectRowAtIndexPath: indexPath animated: YES scrollPosition: UITableViewScrollPositionNone];

Или измените цвет фона ячейки таблицы в делегате представления таблицы:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    cell.backgroundColor = ...
}