0

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

任何帮助是极大的赞赏。

谢谢。

4

2 回答 2

0

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

于 2010-05-04T05:33:44.497 回答
0
  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
    }
}

Key-Value Observing 模式是一种很好的通用方法,可以在对象的值在某处发生变化时触发某事。Apple 编写了一个很好的“快速入门”文档来介绍这个主题。

于 2010-05-04T07:52:14.633 回答