2017-01-03 74 views
1

我有一個tableView這是顯示僱員名單。現在當我滾動tableView,如果還沒有停止滾動,並且如果我點擊搜索欄,應用程序崩潰。索引超出範圍。我不知道爲什麼會發生這種情況。請,如果有人可以幫忙。提前謝謝你。滾動tableview並點擊搜索器崩潰應用程序

注意: Tableview加載listArray。當用戶搜索時,我搜索數組來顯示搜索結果。

代碼:

func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) { 
     self.searchedArray = [] 
     searchEnable = true 
} 

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{ 

     let cell:ListingCell = self.tableView.dequeueReusableCell(withIdentifier: "Cell") as! ListingCell 

     if searchEnable { 
       self.setEmployeeDetailsInTableView(cell: cell, index: indexPath.row, dataArray: searchedArray) 
     } 
     else{ 
       self.setEmployeeDetailsInTableView(cell: cell, index: indexPath.row, dataArray: listArray) 
     } 
} 

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) { 
    if (searchBar.text?.characters.count)! > 0 { 
     searchEnable = true 
     getListForSearchedText(searchText) 
    } 
    if searchBar.text?.characters.count == 0{ 
     searchEnable = false 
     self.tableView.reloadData() 
    } 
} 

func searchBarCancelButtonClicked(_ searchBar: UISearchBar) { 
    searchEnable = false 
    self.searchedArray = [] 
    self.tableView.reloadData() 
} 

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { 
    getListForSearchedText(searchBar.text!) 
    searchBar.resignFirstResponder() 
} 

崩潰:

fatal error: Index out of range

+0

您能告訴我們代碼崩潰請 –

+0

您是否在點擊搜索欄上修改listArray? – user3608500

+0

不,我沒有修改listArray。 –

回答

1

您都面臨這個問題,因爲你設置searchEnabletrue太早意味着在searchBarTextDidBeginEditing(_:),這樣就像你說的tableView仍然在滾動,所以它會調用cellForRowAtIndexPath,並且因爲searchEnabletrue你正在發生這次事故。現在要解決您的問題,您需要將searchEnable設置爲true,您需要初始化searchedArray陣列並重新加載tableView

因此,您需要在方法searchBar(_:shouldChangeTextIn:replacementText:)中將searchEnable設置爲true,或者可能在您的方法getListForSearchedText之內。

+0

Thnx如此多的答案,我會更新,如果這是問題。 –

+0

是的,你對@ Nirav,我剛剛刪除了「searchBarTextDidBeginEditing(_ searchBar:UISearchBar)」func中的代碼,現在它的工作正常。謝謝。 :) –

+0

@JeniKhant歡迎隊友:),很高興它的作品:) –

相關問題