我有一个包含UITableView的View Controller,它使用NSMutableArray通过常用的UITableViewDelegate和UITableViewDataSource方法确定其内容。
过去我使用NSFetchedResults控制器来更新TableView,因为它的查询结果发生了变化。在这种情况下,我想在项目添加到数组中或从数组中删除时适当更新UITableView。
我应该如何处理?我应该使用addItem / removeItem方法将NSMutableArray包装在模型类中,该方法使用委托或通知来触发UITableView上的reloadData吗?还是有更优雅的解决方案?
阵列中最多有20个项目,因此性能不是一个问题。
答案 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是我最好的选择。