2014-06-20 2 views
6

Also habe ich JASidePanels mit einem Root-Controller, der JASidePanelController implementiert und meinem linken Panel, das ein anderer UIViewController ist, eingerichtet.JASidePanels delegiert für viewWillAppear ext wird nicht aufgerufen

Mein Problem ist das linke Panel empfängt nur die viewWillAppear viewDidAppear/disappear und viewWillAppear und viewDid/WillLoad nur einmal zum ersten Mal der Benutzer schiebt das Center-Panel weg. Ab diesem Zeitpunkt werden diese Callback-Funktionen nicht erneut aufgerufen.

Was ist der beste Weg oder wie sollte ich auf diese Ereignisse in meinem linken Panel View Controller reagieren?

Antwort

12

Ok, ich habe es herausgefunden.

Es gibt eine Eigenschaft

@property (nonatomic, readonly) JASidePanelState state; 

Darin heißt es genannt ist: "Aktueller Stand der Platten verwenden KVO Zustandsänderungen zu überwachen"

Es gibt 3 Zustände Änderungen, die ich mit diesem Monitor kann:

JASidePanelCenterVisible = 1, 
JASidePanelLeftVisible, 
JASidePanelRightVisible 

Ich reagiere jetzt auf KVO Änderungen in den Zustand. In meinem linken viewDidLoad Panel-ich habe:

[self.sidePanelController addObserver:self forKeyPath:@"state" options:NSKeyValueObservingOptionNew context:nil]; 

und die Änderung auf Zustand zu erhalten habe ich:

- (void)observeValueForKeyPath:(NSString *)keyPath 
         ofObject:(id)object 
         change:(NSDictionary *)change 
         context:(void *)context 
{ 
    if ([keyPath isEqual:@"state"]) { 
     if ([change[@"new"] isEqual:[NSNumber numberWithInt:1]]) { 
      NSLog(@"Saving settings"); 
     } 
    } 
} 
Verwandte Themen