0

NSMutableArray を使用して、通常の UITableViewDelegate および UITableViewDataSource メソッドを介してコンテンツを決定する UITableView を含むビュー コントローラーがあります。

過去に、NSFetchedResultsコントローラーを使用して、クエリ結果が変化した結果としてTableViewを更新しました。この場合、アイテムが配列に追加/削除されると、適切に UITableView を更新したいと思います。

これをどのように処理すればよいですか?委譲または通知を使用して UITableView で reloadData をトリガーする addItem/removeItem メソッドを使用して、NSMutableArray をモデル クラスにラップする必要がありますか? または、よりエレガントなソリューションはありますか?

配列には最大 20 個の項目があるため、パフォーマンスはそれほど問題になりません。

4

2 に答える 2

1

警告:非 ARC の例

テーブルビューがプロパティとして使用する配列を設定できます

//.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];
    }
 }

次に、テーブルビューデータを変更するたびにarray:、データの変更の最後に。

self.array = newArray;

これはプロパティであるため、外部クラス/ビューは配列を変更でき、テーブルが更新されます。

于 2012-05-04T11:12:29.870 に答える
0

NSArrayControllerは私が欲しいもののようですが、iOSでは利用できないので、KVOが私の最善の策のようです。

于 2012-05-04T12:12:28.970 に答える