2012-05-04 56 views
0

我有一个包含UITableView的View Controller,它使用NSMutableArray通过通常的UITableViewDelegate和UITableViewDataSource方法来确定其内容。当数组发生变化时自动更新UITableView

在过去,我使用NSFetchedResults控制器来更新TableView作为其查询结果更改的结果。在这种情况下,我想适当地更新UITableView,因为项目添加到阵列或从阵列中删除。

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

阵列中最多有20个项目,所以性能并不是什么大问题。

+1

nsmutableArray是您想要做的事的好选择 –

回答

0

看来,NSArrayController是我想要的,但它不适用于iOS,所以它看起来像KVO是我最好的选择。

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; 

由于这是一个属性外部类/视图将能够修改数组,该表将更新。

相关问题