如何触发属性更改方法?

时间:2012-04-11 20:34:22

标签: iphone objective-c ios

我有一个类tabBarController,每当其selectedIndex属性发生变化时,我想触发一个自定义方法。我该如何做到这一点?

这是如何在h的实例变量中声明tabBarController:

BaseViewController *tabBarController;

4 个答案:

答案 0 :(得分:5)

使用UITabBar的-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem * )item方法确定选项卡的索引,从而确定要调用的方法。

答案 1 :(得分:3)

这是键值观察的完美候选者。基本上,当值发生更改时,会通过您定义的任何observers触发通知,以便为任何更改观察该值。当你建立自己和一个观察者并实现observeValueForKeyPath:方法时,你可以用你想要的方法开除它。

这是一个很好的起点:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html#//apple_ref/doc/uid/10000177-BCICJDHA

一开始有点令人生畏,但如果使用得当,基本上就是魔术。

编辑:没看到它很简单UITabBarController。是的,只需使用委托方法。 KVO对此有点过分了。

答案 2 :(得分:0)

创建一个setter:

- (void)setSelectedIndex:(NSInteger*)integer
{
    // Do stuff
    selectedIndex=integer;
    // Or: [super setSelectedIndex:integer];
}

答案 3 :(得分:0)

使用delegate方法-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem * )item