我正在使用此控件来访问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;
  }
}

09-10 01:19
查看更多