0

我有一个包含 UITableView 的视图控制器,它使用 NSMutableArray 通过通常的 UITableViewDelegate 和 UITableViewDataSource 方法确定其内容。

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

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

数组中最多有 20 个项目,因此性能不是什么大问题。

4

2 回答 2

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;

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

于 2012-05-04T11:12:29.870 回答
0

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

于 2012-05-04T12:12:28.970 回答