Подсветка ячейки при выборе - PullRequest
0 голосов
/ 10 января 2012

У меня есть tableView, и я могу выбрать несколько записей.Когда я нажимаю более 1 записи, ячейка должна подсвечиваться.я приложил свой код ниже;Что сейчас происходит, так это то, что когда я нажимаю на несколько записей, они выделяются, но когда я пытаюсь удалить их (как при повторном щелчке по той же строке), другая ячейка становится не подсвеченной.Почему это так?

Но если я заменю [cell setHighlighted:YES animated:YES/NO]; на [cell setAccessoryType:UITableViewCellAccessoryCheckmark];, все будет работать правильно.Как я могу это исправить?

Я добавил код в didSelectRowAtIndexPath

 UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

if ([cell accessoryType] == UITableViewCellAccessoryNone) {
     [cell setHighlighted:YES animated:YES];

} 
else {
       [cell setHighlighted:NO animated:YES];
}

Ответы [ 4 ]

3 голосов
/ 10 января 2012

Возможно, вы захотите использовать UITableViewCellAccessoryCheckmark, так как он предназначен для этой цели.

2 голосов
/ 10 января 2012

Согласно документации разработчика Apple, для выбора более чем одной строки вы должны использовать.

        cell.accessoryType = UITableViewCellAccessoryCheckmark;

и для отмены выбора

        cell.accessoryType = UITableViewCellAccessoryNone;
1 голос
/ 10 января 2012

Как уже говорили другие, выделение не является предпочтительным способом сделать это.Пользователи хотят единообразного взаимодействия между приложениями, поэтому в Руководстве по интерфейсу пользователя рекомендуется использовать флажок для обозначения выбора строки: http://developer.apple.com/library/ios/#documentation/userexperience/conceptual/mobilehig/UIElementGuidelines/UIElementGuidelines.html#//apple_ref/doc/uid/TP40006556-CH13-SW42 (Таблица 7-1)

0 голосов
/ 10 января 2012

Помимо проблем с пользовательским интерфейсом, проблема, с которой вы сталкиваетесь , может быть связана с повторным использованием ячеек таблицы и сохранением выделенного состояния из записи, которая ранее отображалась в этой ячейке. *

Я предлагаю вам вести отдельную запись индексов / идентификаторов для выделенных. Вы должны всегда проверять это, а не состояние самой ячейки. (Вы можете использовать NSArray или другой класс коллекции в зависимости от ваших потребностей).

В tableView: cellForRowAtIndexPath: Вы также должны проверить этот массив и соответственно установить выделенное состояние.

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