2017-01-03 71 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欢迎队友:),很高兴它的作品:) –

相关问题