有没有办法知道何时实际使用了uitableview上的索引?
-
02-10-2019 - |
题
有没有办法知道何时实际使用了uitableview上的索引?我在Apple文档中找不到任何方法,但是我想知道是否有人知道。我基本上想在表视图中制作一个动画,该动画根据索引中选择的部分进行更改,并且我不知道如何在不访问表观视图索引的情况下执行此操作。
任何帮助是极大的赞赏。
谢谢。
解决方案
这
UITableViewDataSource
委托法-tableView:sectionForSectionIndexTitle:atIndex:
返回NSInteger
表示从“索引”部分选择的部分。将此方法覆盖在您的数据源委托(可能是您的表观视图控制器)中。在视图控制器中设置属性,一个
NSInteger
叫selectedSectionIndex
. 。它的值设置为上述代表方法。最后,在View Controller中设置一个观察者,该观察者等待此属性的更改,并在观察到更改时触发您所需的代码。
在你的 -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
}
}
关键值观察模式是当对象的值在某处变化时触发某些东西的良好,一般的方法。苹果已经写了好 “快速启动”文档 这引入了这个话题。
其他提示
不是一个非常优雅的解决方案,但是您也许可以对UitableView进行亚级和注意 - (void)didAddSubview:(UIView *)subview;
当它第一次出现时。这假设它直接添加到UitableView,而不是其子视图或监督之一,并且您可以将添加的视图识别为索引。在第一次添加后,可能会被隐藏和显示,而不是被删除并再次添加。