2010-02-05 3 views
2

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

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

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]; 
    } 

ответ

1

Просто удалить из

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

метод заявление

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

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

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

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

+0

Это сработало, чтобы отменить выбор аксессуара, но вся строка не выделяется при нажатии кнопки аксессуара. Есть ли способ достичь этого? – Rob

+0

Вы правы, строка не подсвечена. Тем не менее, Apple HIG не требует выделения всей строки при нажатии кнопки раскрытия. Все мои приложения работают так, как описано, включая те, которые доступны в AppStore. –

+0

Достаточно справедливо, спасибо за помощь. – Rob

3

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

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

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

} 

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

+0

второй параметр '-reloadRowsAtIndexPaths: withRowAnimation:' не является 'BOOL'; это тип 'UITableViewRowAnimation' – user102008

Смежные вопросы