Есть ли способ узнать, когда индекс на UiableView на самом деле используется?

StackOverflow https://stackoverflow.com/questions/2762905

  •  02-10-2019
  •  | 
  •  

Вопрос

Есть ли способ узнать, когда индекс на UiableView на самом деле используется? Я не могу найти никаких методов в документации Apple, но мне было интересно, знает ли кто-нибудь еще. Я бы в основном хотел сделать анимацию в моем столе представление, что изменения в зависимости от того, какой раздел выбран в индексе, и я понятия не имею, как это сделать без доступа к индексу обзора таблицы.

Любая помощь значительно ценится.

Спасибо.

Это было полезно?

Решение

  1. То UITableViewDataSource Метод делегата -tableView:sectionForSectionIndexTitle:atIndex: Возвращает АН NSInteger Представление раздела, выбранного из индекса раздела. Переопределить этот метод в каком классе - это ваш источник данных делегата (вероятно, контроллер вашей таблицы).

  2. Настройте свойство в контроллере представления, NSInteger называется selectedSectionIndex. Отказ Его значение устанавливается в пределах вышеупомянутого метода делегата.

  3. Наконец, настройте наблюдатель в контроллере просмотра, который ждет изменения в этом свойстве и запускает ваш желаемый код при изменении.

В твоем -viewWillAppear: Способ, например:

[self addObserver:self forKeyPath:@"selectedSectionIndex" options:NSKeyValueObservingOptionNew context:nil];

В твоем -viewWillDisappear: Метод, нерегистрация наблюдателя:

[self removeObserver:self forKeyPath:@"selectedSectionIndex"];

Важно сделать это так, чтобы -dealloc Метод не бросает исключение.

Наконец, создать метод наблюдателя, чтобы сделать что-то, когда есть изменение в selectedSectionIndex:

- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
    if ([keyPath isEqual:@"selectedSectionIndex"]) { 
        // The section index changed, so trigger some cool animation
    }
}

Шаблон наблюдения за ключом является хорошим, общем способом для чего-то вызвать, когда значение объекта меняется где-то. Apple написала хорошее Документ "Quick-start" Это вводит эту тему.

Другие советы

Не очень элегантное решение, но вы можете подклассвать UiableView и следить за ним в - (void)didAddSubview:(UIView *)subview; Когда он впервые появляется. Это предполагает, что он добавляется непосредственно в UiableView, а не один из его субвезонных или руководящих обзоров, и что вы можете распознать добавленный просмотр в качестве индекса. Также возможно, что после первого раза добавляется, он будет скрыт и показан вместо удаления и добавления снова.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top