2016-01-01 50 views
0

我以编程方式创建了UISearchController并将其添加到我的UIView A.我也在同一个UIView中有一个UITableView。我使用UISearchController来搜索我的UITableView。当你点击一个单元格时,UIView B被推送。 UIView A和UIView B都将UINavigationBar设置为HIDDEN。 当我简单地点击一个没有搜索的UITableViewCell时,一切都完全发生,并且UIView B在没有UINavigationBar的情况下显示。iOS - 在UISearchController处于活动状态时显示导航栏

但是,当我使用UISearchController进行搜索并单击UITableViewCell时,UINavigationBar显示在UIView B上,即使我将它设置为隐藏在viewDidAppear方法中。

这里是我的代码:

BarsSearchController = [[UISearchController alloc] initWithSearchResultsController:nil]; 
BarsSearchController.searchResultsUpdater = self; 
BarsSearchController.dimsBackgroundDuringPresentation = NO; 
BarsSearchController.searchBar.delegate = self; 
BarsSearchController.searchBar.barTintColor = [UIColor whiteColor]; 
BarsSearchController.searchBar.searchBarStyle = UISearchBarStyleMinimal; 
[searchBarView addSubview:BarsSearchController.searchBar]; 
[searchBarView addConstraint:[NSLayoutConstraint constraintWithItem:BarsSearchController.searchBar 
                  attribute:NSLayoutAttributeTop 
                  relatedBy:NSLayoutRelationEqual 
                  toItem:searchBarView 
                  attribute:NSLayoutAttributeTop 
                 multiplier:1.0 
                  constant:0.0]]; 

[searchBarView addConstraint:[NSLayoutConstraint constraintWithItem:BarsSearchController.searchBar 
                  attribute:NSLayoutAttributeLeading 
                  relatedBy:NSLayoutRelationEqual 
                  toItem:searchBarView 
                  attribute:NSLayoutAttributeLeading 
                 multiplier:1.0 
                  constant:0.0]]; 

[searchBarView addConstraint:[NSLayoutConstraint constraintWithItem:BarsSearchController.searchBar 
                  attribute:NSLayoutAttributeBottom 
                  relatedBy:NSLayoutRelationEqual 
                  toItem:searchBarView 
                  attribute:NSLayoutAttributeBottom 
                 multiplier:1.0 
                  constant:0.0]]; 

[searchBarView addConstraint:[NSLayoutConstraint constraintWithItem:BarsSearchController.searchBar 
                  attribute:NSLayoutAttributeTrailing 
                  relatedBy:NSLayoutRelationEqual 
                  toItem:searchBarView 
                  attribute:NSLayoutAttributeTrailing 
                 multiplier:1.0 
                  constant:0.0]]; 
[searchBarView layoutIfNeeded]; 
self.definesPresentationContext = YES; 
[BarsSearchController.searchBar sizeToFit]; 

缺少什么我在这里?

+1

BarsSearchController.hidesNavigationBarDuringPresentation =是; –

回答

0
BarsSearchController.hidesNavigationBarDuringPresentation = YES; 
+0

实际上,对不起,这不起作用...默认值已经是YES,导航栏仍然显示。其他想法? –

0

我有同样的问题,解决它,我隐藏后退按钮和背景在viewDidLoad中:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.navigationItem.hidesBackButton = YES; 
    [[[self navigationController] navigationBar] setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]; 
    [[[self navigationController] navigationBar] setShadowImage:[UIImage new]]; 
    [[[self navigationController] navigationBar] setTranslucent:YES]; 
} 

和我隐藏的导航栏在viewDidAppear:

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 
    [[self navigationController] setNavigationBarHidden:YES]; 
} 
相关问题