2015-09-07 100 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

感謝它,像魅力一樣工作 –