Проблема с UITableViewCellAccessory (галочка / нет переключения) - PullRequest
0 голосов
/ 02 марта 2011

edit
Ну, разве я не чувствую себя идиотом.До сих пор я не обращал внимания на то, получает ли клетка галочку.Каким-то образом у меня перевернулись UITableViewCellAccessoryCheckmark и UITableViewCellAccessoryNone, поэтому он выключался, когда я хотел, и включался, когда я хотел его.Правильное чтение кода действительно помогает при отладке ...
/edit

Ниже приведен код, с которым у меня было так много проблем.
С tableView:didSelectRowAtIndexPath:

if (i.need == 0) { // item not needed - hide (#) and turn on checkmark
    i.need = 1;
    cell.textLabel.text = [NSString stringWithFormat:@"%@", i.name];
    cell.accessoryType = UITableViewCellAccessoryNone;
} else if (i.need < 0) { // item not needed - hide (#) and turn on checkmark
    i.need = -i.need;
    cell.textLabel.text = [NSString stringWithFormat:@"%@", i.name];
    cell.accessoryType = UITableViewCellAccessoryNone;
} else { // item not needed - show (#) and turn off checkmark
    i.need = -i.need;
    cell.textLabel.text = [NSString stringWithFormat:@"%@ (%d)", i.name, -i.need];
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
}

Вот что вы получаете за эту ошибку.

Tap row with checkmark: (#) hidden, checkmark removed
Tap row without checkmark: (#) shown, checkmark not set until next tap

1 Ответ

0 голосов
/ 15 марта 2011

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

if (i.need == 0) { // item not needed - hide (#) and turn on checkmark
    i.need = 1;
    cell.textLabel.text = [NSString stringWithFormat:@"%@", i.name];
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
} else if (i.need < 0) { // item not needed - hide (#) and turn on checkmark
    i.need = -i.need;
    cell.textLabel.text = [NSString stringWithFormat:@"%@", i.name];
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
} else { // item not needed - show (#) and turn off checkmark
    i.need = -i.need;
    cell.textLabel.text = [NSString stringWithFormat:@"%@ (%d)",
                                                            i.name, -i.need];
    cell.accessoryType = UITableViewCellAccessoryNone;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...