2017-07-11 13 views
0

私はこのような配列を持っています[1, 2, 3, 4]いつか[1, 2, 4]です。Swift 3:UITableViewの配列[Int]から値を取得

私はhideを実装し、DinamicデータにUITableViewCellを表示したいと思います。しかし、私は配列の要素を取得すると問題が発生します。私はforループを使用していますが、そのdoesntの仕事が思われる。私のコード下:

var dataChgSort = [ ["sort" : 0 , "chgSort" : [1, 2, 3, 4, 5] ] , 
           ["sort" : 1, "chgSort" : [1, 2, 3, 4, 5 ] ] , 
           ["sort" : 12, "chgSort" : [1, 2, 3, 4, 5] ] , 
           ["sort" : 2, "chgSort" : [1, 2, 3, 4, 5] ] , 
           ["sort" : 3, "chgSort" : [4, 5] ] , 
           ["sort" : 4, "chgSort" : [1, 3, 8, 4, 5] ] , 
           ["sort" : 8, "chgSort" : [3, 8] ] , 
           ["sort" : 5, "chgSort" : [1, 3, 4, 5] ] , 
           ["sort" : 6, "chgSort" : [1, 2, 3] ] 
          ] 
..... 
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 

    var height: CGFloat = 0 

    let dataRow = ((self.dataChgSort[index] as [String: Any])["chgSort"] as! [Int]) /*Dinamic Array int [1, 2, 3] or [1,3] etc*/ 

    self.chgSort = ????? 

    if indexPath.row == self.chgSort { 
     height = 0 
    } else { 
     height = super.tableView(tableView, heightForRowAt: indexPath) 
    } 
    return height 
} 

答えて

1

テーブルビューは、行1、2及び下記の4の高さが表示されますので、もしあなたのdataRowショー「[1、2、4]」という私の理解では、私の解決策はindexPath.rowが発生したかどうかを確認することです選択された配列に格納されます。

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 

    let dataRow = ((self.dataChgSort[index] as [String: Any])["chgSort"] as! [Int]) /*Dinamic Array int [1, 2, 3] or [1,3] etc*/ 

    if dataRow.containse(indexPath.row + 1) { 
     return super.tableView(tableView, heightForRowAt: indexPath) 

    } 
    return 0 
} 
+0

が表示されていますがミスマッチがあります。私はインデックスは常に0で始まると思うが、私はそれを修正します。ありがとうございます –

+0

@MarioMargoPradipta素晴らしい!私は+ 1の答えを更新します – xmhafiz

関連する問題