2017-09-24 21 views
0

私は、tableviewセルがクリックされたときに別のテーブルビューがロードされ、API呼び出しが行われるアプリケーションがあります。 APIからの応答に基づいて、テーブルビューリストがロードされ、2番目のテーブルビューの特定の項目が選択されると、テーブルビューのテキストラベルのほかに選択されたチェックボックスが表示され、同時にデータベースが選択値 で更新されます。最初のテーブルビューに戻ると、選択した項目のラベルが表示されます。配列と選択された値のリストを比較してインデックスに基づいてテーブルビューセルに表示する

私がクリックした最初のテーブルビューのセルをクリックすると、apiが呼び出され、apiの結果をデータベースのアクティブなリストと比較し、その特定のセルを選択したままにする必要があります。

最初のtableviewで選択された項目があり、その特定のセルをクリックすると、apiの結果がtableviewをリロードし、それぞれのセルの選択が表示されません。続き

コードです:

for selectedDict in (appDelegate?.selectedCategoryFilterArray)! { 
       let selectedUuid = selectedDict.categoryUuid 
       print("selectedUuid\(selectedUuid)") 

       for allDict in self.requestedFiltersArray!{ 

        let allUuid = allDict.objectForKey("uuid") as? String 
        if selectedUuid == allUuid { 
         cell.imgSelected.image = UIImage(named: "radio_selected") 
         continue 
        }else{ 
         cell.imgSelected.image = UIImage(named: "radio") 

        } 
        print("allUuid\(allUuid)") 
       } 
      } 

予想通りこれが動作しない選択として、何のセルが選択されたセルが、その場合でも表示されません。

答えて

1

このコードはどこに配置しましたか?

私があなたが達成しようとしていると思われるものから、ここに私が示唆しているアプローチがあります。

API呼び出し結果に基づいて読み込まれる2番目のtableViewについては、カスタムUITableViewCellクラスにuuidというStringプロパティを追加します。

次に、cellForRowAtIndexPathを呼び出して2番目のtableViewを作成するとき、各セルをカスタムUITableViewCellとしてインスタンス化し、indexPath.rowを使用してuuidプロパティを結果配列に基づいて適切な値に設定します。

これを設定した後、条件付きでforループを実行して、セルのuuidプロパティ値とAppDelegateのselectedUuid値を一致させ、ロジックごとにイメージを設定できます。

ラフ実装:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "cellIdentifier") as! YourCustomTableViewCell 

     let allDict = self.requestedFiltersArray[indexPath.row] 
     let allUuid = allDict.objectForKey("uuid") as? String 

     cell.uuid = allUuid 

     for selectedDict in (appDelegate?.selectedCategoryFilterArray)! { 
      let selectedUuid = selectedDict.categoryUuid 
      if selectedUuid = cell.uuid { 
       cell.imageSelected.image = UIImage(named: "radio_selected") 
      } else { 
       cell.imageSelected.image = UIImage(named: "radio") 
      } 
     } 


    } 
+0

ねえのおかげで、それは小さな変更で働いていました。 if条件の中にブレークを追加する必要があります。 – Rani

関連する問題