我有一个带有导航栏HIDDEN的UIViewController,顶部的几个按钮,以及带有UISearchController作为标题的UITableView.
这是问题:当我创建UISearchController时,我也有这一行:
self.definesPresentationContext = YES;
现在发生的事情是,当我使用UISearchController进行搜索,并单击UITableView中的一个结果时,它会打开我的下一个UIViewController(这正是它应该做的 – 而且下面的UIViewController也隐藏了导航栏)正确但它在UIViewController顶部显示一个灰色的导航栏,即使我将导航栏设置为隐藏.
现在,当我设置:
self.definesPresentationContext = NO;
导航栏不会出现在下面的视图中,而是在其中,UISearchController的SearchBar出现在下面的UIViewController中,与主视图控制器中的位置相同,即使它显然不再存在.
当self.definesPresentationContext = YES时会发生这种情况.
这就是`self.definesPresentationContext = NO;
我怎样才能回到第一的情况?
UPDATE
这是一个重复此问题的示例项目:
http://www.filedropper.com/sampleprojectbugreport
最佳答案 它确实看起来像iOS中的一个错误.如果您不打算完全显示导航栏,则可以继承UINavigationController并覆盖-setNavigationBarHidden:animated:方法并对隐藏值进行硬编码:
-(void)setNavigationBarHidden:(BOOL)hidden animated:(BOOL)animated {
[super setNavigationBarHidden:YES animated:animated];
}
我已经测试了这种解决方法,它会阻止导航栏显示.
请参阅更新的示例项目:http://appsandwich.com/stackoverflow/navcontrollersubclass.zip