2012-04-26 10 views
5

El uso de accessors parece ser la forma de obtener notificaciones KVO en objetos de colección, pero esto no parece funcionar en la propiedad childViewControllers NSArray de un UIViewController. Deseo recibir una notificación cuando se agrega o elimina un objeto a esta propiedad. Así que probé esto:KVO en UIViewController matriz childViewControllers

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

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

Pero no estoy seguro si lo estoy haciendo bien, no recibo ninguna notificación. Es lo que quiero posible?

Respuesta

0

El punto es que todas las modificaciones de la propiedad tienen que pasar por medio de KVO-obediente. Esto tiene que ver con cómo se implementa UIViewController, nada que pueda hacer desde fuera de esa clase. El uso de los accesadores de la colección indexada es una de las formas en que la implementación de UIViewController podría lograr el cumplimiento de KVO, pero hay otras. No sé si esa propiedad es compatible con KVO; de lo que informa, aparentemente no. Agregar getters o incluso setters en una categoría o subclase no ayuda si la implementación subyacente no los usa.

Cuestiones relacionadas