2015-09-07 67 views
1

我有一个带有搜索栏的桌面视图。我可以搜索并显示正确的结果。当我点击取消时,我的桌面视图获得了所有关于它的数据。我试图实现的是,在搜索时,如果我按下键盘上的返回按钮,并且当搜索栏为空时,我想显示我的初始数据。这是我的搜索代码。 基本上它是我们在iPhone上的联系人通讯录。UISearchController问题swift ios

任何帮助将受到欢迎。

func setupSearchBar() { 
     searchController = self.addSearchBar() 
     searchController.searchResultsUpdater = self 
     searchController.delegate = self 
     searchController.searchBar.delegate = self 
    } 
func updateSearchResultsForSearchController(searchController: UISearchController) { 
     if count(searchController.searchBar.text) > 0 { 
      tableData = MyCoreData().search(searchController.searchBar.text) 
      self.tableView.reloadData() 
     } 
    } 

func searchBarCancelButton(searchBar: UISearchBar) { 
    searchBar.text = "" 
    self.resignFirstResponder() 
    self.view.endEditing(true) 
    searchBar.resignFirstResponder() 
    reloadTableDataFromDB() 
} 

func searchBarTextDidEndEditing(searchBar: UISearchBar) { 
} 
+0

只是把一个其他处理'searchBar.text'为空,并返回所有内容。 –

+0

你介意举个例子。我尝试在此函数updateSearchResultsForSearchController中有一个else部分,然后重新载入tableview数据,但结果相同 –

+0

在else部分中,检查数据是什么。它是空的吗? –

回答

0

您的updatesearch函数缺少其他部分以返回默认加载的数据。做到这一点:

func setupSearchBar() { 
     searchController = self.addSearchBar() 
     searchController.searchResultsUpdater = self 
     searchController.delegate = self 
     searchController.searchBar.delegate = self 
    } 
func updateSearchResultsForSearchController(searchController: UISearchController) { 
     if count(searchController.searchBar.text) > 0 { 
      tableData = MyCoreData().search(searchController.searchBar.text) 
      self.tableView.reloadData() 
     } else { 
     return self.reloadDataFromDB() 
} 
    } 

func searchBarCancelButton(searchBar: UISearchBar) { 
    searchBar.text = "" 
    self.resignFirstResponder() 
    self.view.endEditing(true) 
    searchBar.resignFirstResponder() 
    reloadTableDataFromDB() 
} 

func searchBarTextDidEndEditing(searchBar: UISearchBar) { 
} 
+0

感谢它,像魅力一样工作 –