disable/hide 数据源为 nil 时的 UISearchBar

disable/hide UISearchBar when datasource is nil

我想确保当 table 视图的数据源为空时不显示任何搜索栏。 (有道理,不是吗?这不应该是默认行为吗?)

这是我的一段代码,它尝试(目前未注释)不同的事情来完成它,但不知何故它不起作用。

任何人都可以告诉我我做错了什么吗?如果您需要更多片段,请告诉我。

messagesArray=loadMessages()

        DispatchQueue.main.async {
            if (self.messagesArray.count==0){
                self.noMessageview.isHidden=false
                //self.searchController.searchBar.isHidden = true
                //self.searchController.isActive = false
            } else{
                self.noMessageview.isHidden=true
                //self.searchController.searchBar.isHidden = false
                //self.searchController.isActive = true
            }


            self.spinner.stopAnimating()
            self.refreshControl.endRefreshing()
            self.tableView.reloadData()
        }

更新:

我这样声明搜索控制器:

let searchController = UISearchController(searchResultsController: nil)

在 ViewDidLoad 中我这样做:

navigationItem.searchController = searchController

我相信您使用的是 iOS 11,因为从 navigationItem 设置了 UISearchController,因此您可以使用以下代码将其删除:

    if #available(iOS 11.0, *) {
        self.navigationItem.largeTitleDisplayMode = .never;
        self.navigationItem.searchController = nil
    } else {
        // Fallback on earlier versions
        self.navigationItem.titleView = nil
    };

我遇到了一些问题,我认为它是 iOS 11 错误,当删除 UISearchController 时,视图没有得到调整,因此我不得不在删除 [=12= 之前调用它].

self.navigationItem.largeTitleDisplayMode = .never;

就这些。