Ich habe zwei Klassen in meiner App-Klasse A und B. Beide Klassen A und B sind Instanzen von UIViewController. Klasse A hat eine Schaltfläche, die beim Drücken die Klasse B auf den Stapel verschiebt. Klasse B hat eine Zeichenkette, die die Klasse A bei Bedarf beobachten und aktualisieren möchte. Ich konnte verwenden: [self addObserver:self forKeyPath:@"name" options:0 context:NULL];
in Klasse B, um die Änderungen an der Zeichenfolge anzuzeigen. Wenn ich versuche, die folgenden in der Klasse A viewWillAppear Methode verwenden:iPhone KVO zwischen zwei Klassen
ClassB *b = [[ClassB alloc]init];
[b addObserver:self forKeyPath:@"name" options:0 context:NULL];
und fügen Sie die Methode:
(void)observeValueForKeyPath:(NSString)keyPath ofObject:(id)object
change:(NSDictionary)change
context:(void)context
keine Aktion ausgelöst wird, wenn die vorgenommene Aktualisierungen in B von A zu sehen versuche ich fühle mich albern diese Frage zu stellen, aber wie funktioniert KVO zwischen zwei Klassen in iOS? Ich weiß, das sollte funktionieren.
Dies ist wahrscheinlich die Problem. Sie müssen den Parameter options verwenden, um anzugeben, welche Benachrichtigungen Sie wünschen. Wenn Sie 0 eingeben, werden Sie nicht um etwas gebeten. – benzado
nekno, Danke für die Hilfe! – fmcauley
Wenn dies jemand hilft, hatte ich ein Problem, wo meine "observeValueForKeyPath" Nachricht nicht ausgelöst wurde, obwohl ich es fast genau wie nekno geschrieben habe. Sie müssen die Eigenschaft mit self.name = newvalue, * NOT * nur name = newvalue ändern. – Mirkules