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