Метод didselectrowatindexpath не работает должным образом, если в табличном представлении больше строк, чем может отображаться на экране ipad - PullRequest
1 голос
/ 26 августа 2011

Когда я выбираю строку, я сделал didSelectRowAtIndexPath, чтобы установить индикатор галочки.Представление «Моя таблица» присутствует во всплывающем окне и содержит больше данных, которые можно разместить на экране.Проблема в том, что когда я прокручиваю вниз, чтобы увидеть больше строк, первая ячейка, которая загружается, когда прокрутка также имеет индикатор галочки.

Например, если в моем табличном виде 30 строк, и если я выбираю, я отображаю строку на экране, и на экране может разместиться 15 строк.Если я прокручиваю, чтобы увидеть больше строк, 16-я строка также имеет галочку.Точно так же, если я выбираю 2 строки и прокручиваю вниз, 17-я строка также выбирается.

Мне нужно, чтобы пользователь выбирал только одну строку за раз. Мой didselectrowatindexpth не работает согласованно.Если у кого-то есть подходящая рабочая атмосфера, пожалуйста, поделитесь или предложите мне, как обойти эту проблему. Кроме того, у меня есть два раздела в представлении таблицы.Таким образом, пользователь может выбрать только одну строку из любого из разделов.

Мой код didSelectRowAtIndexPath.

int newRow = [indexPath row];
int oldRow = (lastIndexPath != nil) ? [lastIndexPath row] : -1;

if (newRow != oldRow || (newRow == 0 && oldRow == 0)) {
    UITableViewCell *cell = [bTableView cellForRowAtIndexPath:indexPath];
    [cell setAccessoryType:UITableViewCellAccessoryCheckmark];
    UITableViewCell *oldCell = [bTableView cellForRowAtIndexPath:lastIndexPath];
    oldCell.accessoryType = UITableViewCellAccessoryNone;
    lastIndexPath = indexPath;

1 Ответ

2 голосов
/ 26 августа 2011

Любые изменения, которые вы вносите в свои ячейки, должны сбрасываться в методе делегата cellforrowatindexpath, поскольку они используются повторно.Так что сбросьте перед возвратом ячейки в этом методе.И иметь переменную для хранения выбранных значений и обновлять соответственно.Таким образом, ваш источник данных должен содержать значения выбранных строк, а не ячеек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...