Как показать кнопку раскрытия при использовании didSelectObject на TTTableSubtitleItem - PullRequest
0 голосов
/ 08 апреля 2011

Я использую TTTableSubtitleItem, чтобы создать ячейки для таблицы. Затем я использую didSelectObject для отправки объекта в контроллер подробного представления. Чтобы предотвратить отправку сообщения дважды, я должен установить для URL TTTableSubtitleItem значение nil. Из-за этого кнопка раскрытия не будет отображаться?

    [TTTableSubtitleItem itemWithText:[chunks objectAtIndex: 0] 
                                 subtitle:@"Link To Website"
                                 imageURL:@""
                             defaultImage:[UIImage imageNamed:@"map.png"]
                                      URL:nil 
                             accessoryURL:@"http://www.google.com"];

1 Ответ

1 голос
/ 11 апреля 2011

У меня была такая же проблема, и я обошел ее, подклассифицировав ячейку элемента (так что для вас это будет TTTableSubtitleItemCell и переопределив метод setObject, чтобы вручную включить кнопку раскрытия следующим образом:

- (void)setObject:(id)object {
if (_item != object) {
  [_item release];
  _item = [object retain];

  [super setObject:object];

  self.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}

Я также использовал этот метод, чтобы позволить себе, чтобы стиль выделения оставался синим, даже если я не обрабатывал URL ожидаемым образом. Это могло бы произойти, просто добавив

  self.selectionStyle = UITableViewCellSelectionStyleBlue;

сразу после другого вызова.

Обратите внимание, что вам также необходимо добавить сопоставление между интересующими вас элементами и новой ячейкой настраиваемого элемента в вашем источнике данных. Это требует переопределения одного метода в настраиваемомисточник данных. Если вы хотите, чтобы все ваши TTTableSubtitleItem s имели кнопку раскрытия, вы можете сопоставить TTTableSubtitleItem с новой ячейкой пользовательского элемента. В противном случае просто создайте пользовательский подкласс TTTableSubtitleItem, который не делает никакихизменения к нему. Предполагая, что ваши два новых подкласса CustomItem и CustomItemCell ваш источник данных переопределит следующий метод, чтобы выглядеть так:

- (Class)tableView:(UITableView *)tableView cellClassForObject:(id)object {
  if ([object isKindOfClass:[CustomItem class]]) {
    return [CustomItemCell class];
  } else {
    return [super tableView:tableView cellClassForObject:object];
  }
}

Надеюсьэто помогает

...