2017-01-03 10 views
1

私は従業員のリストを表示しているtableViewがあります。今度はtableViewをスクロールし、スクロールがまだ停止していない場合、検索バーをクリックするとアプリがクラッシュします。インデックスが範囲外です。なぜこれが起こっているのか分かりません。誰でも手伝ってください。事前にありがとうございます。テーブルビューをスクロールしてサーチャークラッシュアプ​​リをクリック

注:テーブルビューにはlistArrayがロードされます。ユーザーの検索時に、検索結果を表示するsearchArrayです。

コード:

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

あなたはtableView言ったように、そのようあなたがsearchBarTextDidBeginEditing(_:)searchEnabletrueに早すぎる手段を設定しているので、あなたがこの問題に直面していますまだスクロールしていますので、cellForRowAtIndexPathと呼び、searchEnabletrueです。このクラッシュが発生しています。問題を解決するには、searchedArrayアレイを初期化してtableViewを再ロードする場合、searchEnabletrueに設定する必要があります。

truesearchBar(_:shouldChangeTextIn:replacementText:)の方法で設定するか、getListForSearchedTextのメソッドの中に入れる必要があります。

+0

Thnxので、答えのために、私はそれが問題なら更新します。 –

+0

はいu r右@ Nirav、私はちょうど "searchBarTextDidBeginEditing(_ searchBar:UISearchBar)" funcのコードを削除し、現在は正常に動作しています。ありがとうございました。 :) –

+0

@JeniKhantようこそメイト:)、うれしいです:) –

関連する問題