Странная ошибка UITableViewCell: взгляды аксессуаров меняются случайным образом? - PullRequest
0 голосов
/ 19 июня 2011

Итак, у меня есть UITableView, настроенный для отображения всех системных языков, где пользователь может выбрать один. После выбора ячейка устанавливает свой дополнительный вид на галочку и устанавливает все остальные виды дополнительных ячеек как ни один. Но по какой-то причине, когда одна ячейка выбрана, другая ячейка также будет выбрана случайным образом.

Например: здесь я выбираю английский Великобритания.

But then when I scroll down (here showing the bottom of the list), English US seems to have automatically selected itself.

And then when I scroll back up to the top, English UK has magically deselected itself, but Spanish has been checked somehow.

Here is the entire source of the ViewController subclass: http://pastebin.com/EYNS9ahk

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

Ответы [ 2 ]

1 голос
/ 19 июня 2011

Ваш код кажется мне хорошо написанным, я думаю, что проблема может быть связана с возможностью повторного использования ячеек,

Попробуйте выполнить следующие изменения,

NSString *CellIdentifier = [NSString  stringWithFormat:@"Cell_%d",index.row];
UITableViewCell *cell = [aTableView dequeueReusableCellWithIdentifier:CellIdentifier];

дайте мне знать, если проблема все еще возникает.

0 голосов
/ 19 июня 2011

Поскольку ячейка может использоваться многократно, при прокрутке ячейки вне порта просмотра будут поставлены в очередь, а -tableView:cellForRowAtIndexPath: выведет из очереди поставленные в очередь ячейки для повторного использования, свойство ячеек остается статусом при постановке в очередь, поэтому вам необходимо установить значение новый статус.

Чтобы решить вашу проблему, вы должны помнить, что indexPath выбранной ячейки или другие вещи могут идентифицировать ячейку, и установить для нее accessoryType в -tableView:cellForRowAtIndexPath:, не полагайтесь на -tableView:didSelectRowAtIndexPath:.

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