AccessoryDetailDisclosureButton не отменяет выбор после вызова deselectRowAtIndexPath - PullRequest
2 голосов
/ 05 февраля 2010

В моем табличном представлении у меня есть количество строк, которые имеют тип аксессуара кнопки раскрытия информации, и при нажатии на строку или аксессуар новый вид помещается в контроллер навигации. Я вызываю deselectRowAtIndexPath в конце функции didSelectRowAtIndexPath.

Если я нажимаю вспомогательную кнопку, я перехожу на новый вид, но он остается выделенным, когда я возвращаюсь к этому виду (всплывающее окно). Строка отменена, как и ожидалось, но не это. Есть какие-нибудь мысли о том, как его «не выделить»?

cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    ...
    [tableView deselectRowAtIndexPath:indexPath animated:YES];

    }
    - (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath {
     [tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionTop];
     [self tableView:tableView didSelectRowAtIndexPath:indexPath];
    }

Ответы [ 2 ]

3 голосов
/ 08 июля 2010

Для тех, кто все еще обеспокоен этим и хочет решение, которое, кажется, работает прямо сейчас, попробуйте это:

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

[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];
[tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];

}

Вы должны перезагрузить данные ПЕРВЫМ, а затем выбрать строку, чтобы выделение появилось под параметрами листа действий.

1 голос
/ 05 февраля 2010

Просто удалите из вашего

- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath;

метод утверждения

[tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionTop];

Поскольку ваша таблица уже позволяет выбор, и вы правильно отменили ее выбор в

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

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

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