如何为隐藏/取消隐藏的UINavigationBar添加KVO?

时间:2016-11-16 01:48:09

标签: ios objective-c

我正在尝试为MAX_STEPS隐藏/取消隐藏添加一个观察者,如下面的代码,但无论如何它都不起作用:

const MAX_STEPS = 25; const sessionId = 'some-session-id'; const context0 = {}; client .runActions(sessionId, 'events nearby', context0, MAX_STEPS) .then((context1) => { return client.runActions(sessionId, 'how about in London?', context1, MAX_STEPS - 1); }) .then((context2) => { console.log('The session state is now: ' + JSON.stringify(context2)); }) .catch((e) => { console.log('Oops! Got an error: ' + e); });

也尝试了这个,但仍然不起作用:

UINavigationBar

当我检查LLDB中的[self.navigationController addObserver:self forKeyPath:@"navigationBarHidden" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil];时,它告诉我属性[self.navigationController.navigationBar addObserver:self forKeyPath:@"hidden" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil];(表示self.navigationController.navigationBar)。有没有人有同样的问题?

addtional message:

navigationController not found for UIViewController

}

self

我尝试使用navigationBarHidden并隐藏它们。

2 个答案:

答案 0 :(得分:1)

KVO仅对使用KVC设置的属性进行操作。 UINavigationController没有与其导航栏的显示和隐藏有关的KVC兼容属性。因此,您无法使用KVO来检测导航栏何时显示和隐藏。

答案 1 :(得分:0)

我遇到了同样的问题。似乎无法通过KVO获得状态。我正在尝试添加一个计时器,用于检查导航栏是否已隐藏或不是每0.5秒一次。有点棘手,但至少可以用。