数组更改时自动更新UITableView

时间:2012-05-04 10:55:28

标签: iphone ios arrays uitableview nsmutablearray

我有一个包含UITableView的View Controller,它使用NSMutableArray通过常用的UITableViewDelegate和UITableViewDataSource方法确定其内容。

过去我使用NSFetchedResults控制器来更新TableView,因为它的查询结果发生了变化。在这种情况下,我想在项目添加到数组中或从数组中删除时适当更新UITableView。

我应该如何处理?我应该使用addItem / removeItem方法将NSMutableArray包装在模型类中,该方法使用委托或通知来触发UITableView上的reloadData吗?还是有更优雅的解决方案?

阵列中最多有20个项目,因此性能不是一个问题。

2 个答案:

答案 0 :(得分:1)

警告:非ARC示例

您可以设置tableview用作属性的数组

//.h

..... {

    NSArray* array_;

}

@property (nonatomic, retain) NSArray* array;

//.m

合成数组

@synthesize array = array_;

我们对数组更改感兴趣,因此重写setter方法

-(void)setArray:(NSArray*)array {
    if (array_ != array) {
        [array_ release];
        array_ = [array retain];
        [self.tableview reloadData];
    }
 }

然后,每当修改tableview数据时,array:在修改数据结束时。

self.array = newArray;

因为它是一个属性,外部类/视图将能够修改数组,表将更新。

答案 1 :(得分:0)

似乎NSArrayController是我想要的,但它在iOS中不可用,所以看起来KVO是我最好的选择。