2016-11-22 11 views
0

だから私は私のjsonからデータを追加する構造体の配列を持っています。同じ配列にはさまざまな種類のデータがあります。特定の条件が満たされている場合にのみセルを追加します

struct PersonData { 
    let name: String 
    let age: String 
    let sex : String 
} 

私がしたいのは、ユーザーが選択したものに応じてテーブルビューをリロードするpickerViewを実装することです。ユーザーが性別と年齢を選択できる2つのピッカービューがあるとします。

もし彼が17歳の男性をすべて選んだのであれば、私はそれをテーブルビューに表示したいと思います。

私はすでにアレイ上のカウントを取得することができますが、私はこのような何かやってみたかった

UITableViewCell方法にnilを返すことができません。

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

     let cell = tableView.dequeueReusableCell(withIdentifier: "reuseCell", for: indexPath) as! CellTeatroTableViewCell 

     if(option == 0) //All persons. Default option 
     { 
      cell.name.text = dataArray[indexPath.row].name 
      return cell 

     } 
     else 
     { 
      if(dataArray[indexPath.row].age == agePickerOption || dataArray[indexPath.row].sex == sexPickerOption) 
      { 
       cell.name.text = dataArray[indexPath.row].name 
       return cell 
      } 
     } 

     return nil 

    } 

私は以来、nilを返すカント知っているが彼はUITableViewCellを期待していますが、特定の条件が満たされている場合にのみindexPathをインクリメントすることは可能ですか?

セルを追加して直後に削除する必要がありますか?これは正しいとは言えません。

答えて

1

私は2つのデータ配列必要があります: - すべての要素

filteredDataArray -

allDataArrayあなたがデータソースとしてfilteredArrayを使用している場合は、あなたのフィルタ

に準拠要素をあなたそのロジックをcellForRowメソッドに入れる必要はありません。

代わりに、あなたのallDataArrayをフィルタリングし、filteredDataArrayにそれを置くために、ピッカーのデリゲートメソッドを使用します。

+0

どうしたのですか?そのような簡単な解決策。私はどのように私はデータソースとして1つの配列を使用して逃すことが知りません。ありがとうLopes! – Adrian

+1

問題はありません;)Good Coding – LopesFigueiredo

関連する問題