如何从视图中移除iOS 11搜索栏并更新UI

10
在Xcode 9中,当我将搜索栏放在视图中时,它会自动向下移动其余的UI。当我尝试从视图中删除搜索栏时,我得到了一个黑色的空间,而不是UI被纠正。我正在使用的行是:self.navigationItem.searchController = nil。我尝试了很多方法,但我不知道如何在搜索栏被移除后纠正UI。只有当我切换到另一个视图控制器并返回时,UI才会正确地显示没有搜索栏。我在这里缺少什么?
代码:
@IBAction func searchIconPressed(_ sender: UIBarButtonItem) {

    //ios 11
    if #available(iOS 11.0, *) {
         if self.navigationItem.searchController == nil {
            self.navigationItem.searchController = self.searchController
            self.searchController.isActive = true

        }
        else {
            self.navigationItem.searchController?.isActive = false
            self.navigationItem.searchController = nil
        }
    }
    //when ios 9-10
    else {
        if self.navigationItem.titleView == nil {
            self.navigationItem.titleView = self.searchController.searchBar
            self.searchController.isActive = true
        }
        else {
            self.navigationItem.titleView = nil
        }
    }
}
2个回答

6
从视图中移除搜索栏并使UI重新上移的答案是:
self.navigationItem.searchController?.isActive = false
let search = UISearchController(searchResultsController: nil)
self.navigationItem.searchController = search
self.navigationItem.searchController = nil

2
这里是针对Objective C的内容。
[self.navigationItem.searchController setActive:NO];
UISearchController *nilSearch = [[UISearchController alloc] initWithSearchResultsController:nil];
self.navigationItem.searchController = nilSearch;
self.navigationItem.searchController = nil;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接