解决UISearchDisplayController 在消失后显示navigationController.navigationBar的问题

本人在做一个项目,在viewWillAppear已经加入了如下代码,
self.navigationController.navigationBar.hidden = YES ;

但是使用了UISearchDisplayController后,但是出现一个问题,就是在UISearchDisplayController消失后,navigationBar显示了。查找了API文档,找到这么一句话,

/* Displaying the search bar in a navigation bar will override the contentsController's navigationItem if it has one. */
@property (nonatomic, assign) BOOL displaysSearchBarInNavigationBar NS_AVAILABLE_IOS(7_0);

后来,又看到有这么一个属性,

@property(nonatomic,readonly)                                  UIViewController           *searchContentsController; // the view we are searching (often a UITableViewController)

于是,在代码里面加入如下语句,

_searchController.displaysSearchBarInNavigationBar = NO ;
_searchController.searchContentsController.navigationController.navigationBarHidden = YES ;

问题就解决了。

原因:在点击UISearchDisplayController中的查找输入框后,会弹出一个UITableViewController,而输入框会放在当前的ViewController中的navigationBar上面,所以导致了navigationBar显示。

**新发现: self.navigationController.navigationBarHidden = YES;
好像也能解决这个问题。**

你可能感兴趣的:(IPhone开发)