Есть ли способ узнать, когда индекс на UiableView на самом деле используется?
-
02-10-2019 - |
Вопрос
Есть ли способ узнать, когда индекс на UiableView на самом деле используется? Я не могу найти никаких методов в документации Apple, но мне было интересно, знает ли кто-нибудь еще. Я бы в основном хотел сделать анимацию в моем столе представление, что изменения в зависимости от того, какой раздел выбран в индексе, и я понятия не имею, как это сделать без доступа к индексу обзора таблицы.
Любая помощь значительно ценится.
Спасибо.
Решение
То
UITableViewDataSource
Метод делегата-tableView:sectionForSectionIndexTitle:atIndex:
Возвращает АНNSInteger
Представление раздела, выбранного из индекса раздела. Переопределить этот метод в каком классе - это ваш источник данных делегата (вероятно, контроллер вашей таблицы).Настройте свойство в контроллере представления,
NSInteger
называетсяselectedSectionIndex
. Отказ Его значение устанавливается в пределах вышеупомянутого метода делегата.Наконец, настройте наблюдатель в контроллере просмотра, который ждет изменения в этом свойстве и запускает ваш желаемый код при изменении.
В твоем -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, а не один из его субвезонных или руководящих обзоров, и что вы можете распознать добавленный просмотр в качестве индекса. Также возможно, что после первого раза добавляется, он будет скрыт и показан вместо удаления и добавления снова.