当应用程序的委托属性发生更改时,重新加载UITabbarController的表视图

时间:2012-01-04 15:57:09

标签: iphone objective-c

在我的iPhone应用程序中,当用于填充它的项目列表(此列表是应用程序委托的NSMutableArray属性)被修改时,我想重新加载表视图。
最好的方法是什么?
起初我虽然是NSTimer,但我想这不是一个正确的方法...... May KVO模式可以解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

KVO是可行的方法,但您必须确保使用适当的访问器对阵列进行更改,以便KVC / KVO机制正常工作。

至少,使用NSMutableArray返回的可变代理更改mutableArrayValueForKey:属性。 Apple's documentation suggests that you go further

  

强烈建议您实现这些可变访问器   而不是依赖于直接返回可变集的访问器。该   可变访问器在进行更改时效率更高   关系中的数据。

     

为了符合可变序列的键值编码   你必须实现以下方法的多对多关系:

     
      
  • -insertObject:in<Key>AtIndex:-insert<Key>:atIndexes:。必须实现这些方法中的至少一种。这些类似于   NSMutableArray方法insertObject:atIndex:和   insertObjects:atIndexes:

  •   
  • -removeObjectFrom<Key>AtIndex:-remove<Key>AtIndexes:。必须实现这些方法中的至少一种。这些方法对应于   NSMutableArray方法removeObjectAtIndex:和   分别为removeObjectsAtIndexes:

  •   
  • -replaceObjectIn<Key>AtIndex:withObject:-replace<Key>AtIndexes:with<Key>:。可选的。如果基准测试表明性能是一个问题,则实施。

  •   
     

-insertObject:in<Key>AtIndex:方法传递给对象   insert,以及一个NSUInteger,它指定索引应该在哪里   插入。 -insert<Key>:atIndexes:方法插入一个数组   对象在传递的指定索引处进入集合   NSIndexSet。您只需要实现这两个中的一个   方法