代码之家  ›  专栏  ›  技术社区  ›  Jan

如何阻止uisearchcontroller显示导航栏?

  •  1
  • Jan  · 技术社区  · 6 年前

    我的用例有点奇怪。我正在使用自己的导航栏,因此我将默认的导航栏隐藏在

    [self.navigationController setNavigationBarHidden:YES animated:NO];
    

    viewWillAppear .

    一切都很好,但是如果我在一个活动的搜索中打开键盘,然后回到上一个 UIViewController ,然后本机导航栏再次出现,最后出现两个导航栏(我自己的和默认的)。

    这就是我设置 UISearchController 在里面 viewDidLoad :

    - (void)viewDidLoad {
    [super viewDidLoad];
    self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
    self.searchController.searchResultsUpdater = self;
    self.searchController.obscuresBackgroundDuringPresentation = NO;
    self.searchController.searchBar.delegate = self;
    [self.searchController.searchBar sizeToFit];
    self.definesPresentationContext = YES;
    self.searchController.hidesNavigationBarDuringPresentation = YES;
    self.searchController.searchBar.searchBarStyle = UISearchBarStyleMinimal;
    }
    

    我已经尝试移除 self.definesPresentationContext = YES; (或将其转为“否”),但这产生了另一个问题,即当我回到前一个问题时 ui视图控制器 搜索栏保持在其他一切之上!直到我点击“取消”。我还试着用程序调用取消按钮 viewWillDissappear 但那也没用…

    所以我没办法了,所以我来了。

    有什么想法吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Axy    6 年前

    - (void)setNavigationBarHidden:(BOOL)hidden animated:(BOOL)animated{
         [super setNavigationBarHidden:YES animated:NO];
    }