有没有办法知道何时实际使用了uitableview上的索引?我在Apple文档中找不到任何方法,但是我想知道是否有人知道。我基本上想在表视图中制作一个动画,该动画根据索引中选择的部分进行更改,并且我不知道如何在不访问表观视图索引的情况下执行此操作。

任何帮助是极大的赞赏。

谢谢。

有帮助吗?

解决方案

  1. UITableViewDataSource 委托法 -tableView:sectionForSectionIndexTitle:atIndex: 返回 NSInteger 表示从“索引”部分选择的部分。将此方法覆盖在您的数据源委托(可能是您的表观视图控制器)中。

  2. 在视图控制器中设置属性,一个 NSIntegerselectedSectionIndex. 。它的值设置为上述代表方法。

  3. 最后,在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,而不是其子视图或监督之一,并且您可以将添加的视图识别为索引。在第一次添加后,可能会被隐藏和显示,而不是被删除并再次添加。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top