2017-08-03 15 views
0

辞書の行数に応じてセルを動的に生成したい。ビューの読み込みでは、辞書はNULLで道路上にバインドされています。
辞書は3つのキー値でうまくバインドされていますが、辞書値に基づいてセルを作成する場合、キーは常に辞書の最後の項目を含む3つの行を作成します。tableView Swiftの乗算値

私はそれを理解できません。

これは私のコードです:

var peripherals = [String:String]() 

    override func numberOfSections(in tableView: UITableView) -> Int { 
     return 1 
    } 

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    print(peripherals.count) 
    return peripherals.count 
} 


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "LabelCell", for: indexPath) 

    for (peripheralDeviceUUID,peripheralDeviceName) in peripherals { 
     cell.textLabel?.text = "\(indexPath) \(peripheralDeviceName) : \(peripheralDeviceUUID)" 
    } 


    return cell 
} 

override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { 
    return "Section \(section)" 
} 
+1

ちょうどループを削除し、indexPath.rowを使用してtextlabel設定 cell.textLabelの.text =「\(indexPath.row)\(peripheralDeviceName)?: \(peripheralDeviceUUID) " –

+0

@Ralucalonescu辞書に含まれるキーは何ですか? –

+0

あなたの辞書にある値に基づいてセルの数が欲しいですか?あなたの辞書に3つのキー値があると言ったように、番号やキーに基づいてセルを表示したいですか?または値に基づいて? – Pankaj

答えて

2

Firtはあなたの辞書からキーと値の配列を作ります。

let dict = ["a": "first", "b": "second", "c": "third"] 
    let arrayKeys = Array(dict.keys) 
    let arrayValues = Array(dict.values) 

その後、cellForRowでこれらの配列を使用する:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
      let cell = tableView.dequeueReusableCell(withIdentifier: "LabelCell", for: indexPath)  
      cell.textLabel?.text = "\(indexPath.row) \(arrayValues[indexPath.row]) : \(arrayKeys[indexPath.row])" 
      return cell 
    }