Делегаты JASidePanels для viewWillAppear ext не вызываются

#ios #objective-c #uiviewcontroller #jasidepanels

#iOS #objective-c #uiviewcontroller #jasidepanels

Вопрос:

Итак, я настроил JASidePanels с корневым контроллером, который реализует JASidePanelController, и моей левой панелью, которая является другим UIViewController.

Моя проблема в том, что левая панель получает только viewWillAppear viewDid appear / disappear, а viewWillAppear и viewDid / загружаются только один раз, когда пользователь впервые отодвигает центральную панель. С этого момента эти функции обратного вызова больше не вызываются.

Каков наилучший способ или как я должен реагировать на эти события внутри моего контроллера просмотра левой панели.

Ответ №1:

Хорошо, я понял это.

Существует свойство, которое называется

 @property (nonatomic, readonly) JASidePanelState state;
 

В нем говорится:
«Текущее состояние панелей. Используйте KVO для отслеживания изменений состояния «

Есть 3 изменения состояния, которые я могу отслеживать с помощью этого:

 JASidePanelCenterVisible = 1,
JASidePanelLeftVisible,
JASidePanelRightVisible
 

Теперь я реагирую на изменения состояния KVO. В viewDidLoad моей левой панели у меня есть:

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

и для получения изменения состояния у меня есть:

 - (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");
        }
    }
}