2010-01-19 2 views
0

Я хотел бы, чтобы все строки в моем представлении таблицы использовали UITableViewCellAccessoryNone (например, ни одна кнопка справа), если они не выбраны, и в этот момент я хочу использовать UITableViewCellAccessoryDetailDisclosureButton. Например. только одна строка (или ни один, если нет выбора) имеет кнопку за раз.UITableView: Как сделать UITableViewCellAccessoryDetailDisclosureButton появляться при выборе?

Возможно ли это? Выполнение обычной реализации аксессуарTypeForRowWithIndexPath не работает динамически - например, он получает только один раз, независимо от того, что выбрано.

Благодаря

ответ

1

Если изменить содержимое ячейки, вы хотите позвонить -reloadRowsAtIndexPaths: withRowAnimation: на вашем Tableview.

+0

Thanks Ben! Это отлично работает. –

3

Примечание для других, пытающихся этого .. метод делегата accessoryTypeForRowWithIndexPath теперь амортизируются, вы получите это сообщение, если вы попробуете:

ПРЕДУПРЕЖДЕНИЕ: Использование топологии ячейки унаследованной из-за делегировать реализацию Tableview : принадлежностиTypeForRowWithIndexPath: in. Пожалуйста, удалите вашу реализацию этого метода и установите свойства ячейки принадлежностьType и/или editAccessoryType, чтобы перейти к новому поведению макета ячейки . Этот метод больше не будет вызываться в будущем .

Вместо этого реализует метод setSelected в вашем подклассе UITableViewCell.

- (void)setSelected:(BOOL)selected animated:(BOOL)animated { 

[super setSelected:selected animated:animated]; 

// Configure the view for the selected state 

if (selected) { 
    self.accessoryType = UITableViewCellAccessoryDetailDisclosureButton; 
} else { 
    self.accessoryType = UITableViewCellAccessoryNone; 
} 

..то использовать reloadRowsAtIndexPaths: метод withRowAnimation, как описано выше.