2010-05-04 46 views
0

有没有办法知道什么时候uitableview上的索引被实际使用?我在苹果文档中找不到任何方法,但我想知道是否有人知道任何东西。我基本上喜欢在我的表格视图中制作一个动画,这个动画根据索引中选择的部分而变化,我不知道如何在不访问表格视图索引的情况下做到这一点。有没有办法知道uitableview上的索引何时被实际使用?

任何帮助,非常感谢。

谢谢。

回答

0
  1. -tableView:sectionForSectionIndexTitle:atIndex:返回NSInteger表示从节索引所选择的部分中的UITableViewDataSource委托方法。无论哪个类是数据源委托(可能是您的表视图控制器),都覆盖此方法。

  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 
    } 
} 

的键 - 值观察模式是触发东西时,对象的值发生变化的地方好了,一般的方式。苹果已经写了一个很好的"quick-start" document,介绍了这个话题。

+0

非常感谢你,这似乎正是我要找的。 – Michaeljvdw 2010-05-05 10:17:51

0

不是一个非常优雅的解决方案,但你可以子类的UITableView和- (void)didAddSubview:(UIView *)subview;观看它时,它第一次出现了。这假定它直接添加到UITableView而不是其子视图或超级视图之一,并且您可以将添加的视图识别为索引。也有可能在第一次添加之后,它将被隐藏并显示,而不是被删除并再次添加。

相关问题