我正在使用此控件来访问UINavigation栏及其项。
if ([self.searchBar.superview isKindOfClass:[UINavigationBar class]]) {
navigationItem = ((UINavigationBar *) self.searchBar.superview).topItem;
}
但是,当我使用iOS 11模拟器和xCode 9时,它不起作用。
如果我使用较低版本的模拟器(如iOS 8.2)进行调试并打印
po self.searchBar.superView
它打印“UINavigationBar”,但是当我在iOS 11上执行相同操作时,它打印“_UINavigationBarContentView”。
我应该如何更改iOS 11的代码?
最佳答案
您可以尝试此代码
if (@available (iOS 11.0, *)) {
if ([self.searchBar.superview isKindOfClass:[UINavigationBar class]]) {
navigationItem = ((UINavigationBar *) self.searchBar.superview).topItem;
}
} else {
if ([self.searchBar.superview.superview isKindOfClass:[UINavigationBar class]]) {
navigationItem = ((UINavigationBar *) self.searchBar.superview.superview).topItem;
}
}