Почему галочки не отображаются, когда включен UITableView.allowsMultipleSelection? - PullRequest
8 голосов
/ 21 марта 2012

У меня есть UITableView в приложении iOS5.1, где я установил

self.tableView.allowsMultipleSelection=YES;

Документация Apple гласит: «Когда значением этого свойства является ДА, рядом с каждой строкой, на которую производится нажатие, ставится галочка. Повторное нажатие на строку снимает галочку.».

Я могу выбрать несколько строк, так как фон установлен на Синий. Однако галочки не отображаются. Нужно ли устанавливать флажок, как показано ниже в didSelectRowAtIndexPath, потому что я использую пользовательские UITableViewCells?

cell.accessoryType = UITableViewCellAccessoryCheckmark;

Ответы [ 2 ]

5 голосов
/ 22 марта 2012

Я делаю галочки вручную в подклассах uitableviewcell. Вам нужно будет сделать UITableViewCellAccessoryCheckmark вручную в didSelectRowAtIndexPath и отслеживать, какой из них выбран. Я бы порекомендовал что-то вроде этого:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell* cell = [tableview cellAtIndex:indexPath];
    if(cell.accessoryType == UITableViewCellAccessoryCheckmark)
       cell.accessoryType = UITableViewCellAccessoryCheckmark;
    else
     cell.accessoryType = UITableViewCellAccessoryNone;
}

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

1 голос
/ 03 ноября 2012

Другой вариант - использовать tableView: didDeselectRowAtIndexPath: в дополнение к tableView: didSelectRowAtIndexPath:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

cell.accessoryType = UITableViewCellAccessoryCheckmark;

}

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

cell.accessoryType = UITableViewCellAccessoryNone;

}

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