2012-04-26 8 views
5

accessorsを使用すると、コレクションオブジェクトでKVO通知を取得する方法があるようですが、UIViewControllerのchildViewController NSArrayプロパティでは機能していないようです。このプロパティにオブジェクトが追加または削除されたときに通知を受けたい。だから私はこれを試しました:UIViewControllerのKVO childViewControllers配列

[self addObserver:self forKeyPath:@"childViewControllers" options:NSKeyValueObservingOptionNew context:nil]; 

-(NSUInteger)countOfChildViewControllers 
{ 
    return self.childViewControllers.count; 
} 

しかし私はそれを正しくやっているかどうかわかりませんが、私は通知を受けていません。私は可能なのですか?

答えて

0

重要なのは、プロパティのすべての変更がKVO準拠の手段を経なければならないということです。これは、UIViewControllerの実装方法と関係があり、そのクラスの外からは何もできません。インデックス付きコレクションアクセサを使用することは、UIViewControllerの実装がKVO準拠を達成する方法の1つですが、他にもあります。そのプロパティがKVOに準拠しているかどうかはわかりません。あなたが報告したものから、明らかにそうではありません。カテゴリーやサブクラスにゲッターやセッターを追加しても、基本となる実装でそれらを使用しない場合は役に立ちません。