【问题标题】:how to hide UItableView only when search result is 0仅当搜索结果为 0 时如何隐藏 UItableView
【发布时间】:2019-08-26 14:42:19
【问题描述】:

当搜索结果为 0 时,我试图隐藏 tableViewUsers。但我的逻辑隐藏了 UItableView 和 UISearchBar“位于表头上”的结果是 0。我想查看“无结果视图”和保持搜索栏对用户可见以再次搜索?

代码

public func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
    searchBar.showsCancelButton = true
    filteredUsers = users.filter {
        $0.username.range(of: searchText, options: .caseInsensitive) != nil ||
            $0.email.range(of: searchText, options: .caseInsensitive) != nil
    }

    if(filteredUsers.count ==  0){
        tableViewUsers.isHidden = true
        view.backgroundColor = UIColor.white
        view.addSubview(NoItemFoundVIew)
        NoItemFoundVIew.center = view.center
    }
    else
    {
        tableViewUsers.reloadData()
    }

}

【问题讨论】:

  • 使用 tableView.backgroundView 属性怎么样?您也可以将 backgroundColor 设置为 .clear。我没有得到 searchBar 在标题中,但是好的。
  • 你能用代码告诉我吗?
  • 尝试将 backgroundColor 设置为 .clear。在这种情况下,它应该可以工作,尽管不是最好的。如果您使用您的方法而不使用中心属性,我还建议在中心约束 NoItemFoundVIew。
  • 否则您可以设置 tableView.backgroundView = NoItemFoundView() 并在有结果时将其设置为 nil
  • 模拟器还内置了printScreen功能。Command+S

标签: swift uitableview uisearchbar


【解决方案1】:

我就是这样做的

    view.backgroundColor = UIColor.white
    view.addSubview(NoItemFoundVIew)
    NoItemFoundVIew.center = view.center
    tableViewUsers.reloadData()
    tableViewUsers.separatorStyle = .none

【讨论】:

    【解决方案2】:

    在您的情况下,即使将自定义视图的背景颜色设置为 .clear 就足够了:

    view.backgroundColor = UIColor.clear
    

    我建议使用约束来添加您的视图,而不是使用 .center 属性,但这取决于您。

    否则,您可以将 tableView 的 backgroundView 属性与自定义视图具有的任何初始化程序一起使用。

    tableView.backgroundView = NoItemFoundView()
    

    当你有结果时删除它。

    tableView.backgroundView = nil
    

    【讨论】:

      猜你喜欢
      • 2023-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-06
      • 1970-01-01
      • 1970-01-01
      • 2013-04-11
      • 2017-12-06
      相关资源
      最近更新 更多