2016-02-03 61 views
2

這是上一個問題的構建。Swift:在tableView中設置標籤和自定義參數單元格

我有一個這樣定義的數組:

var items = [[String:String]]() 

該數據被動態地從一個JSON文件更新

for (_,bands) in json { 
    for (_,bname) in bands { 
     let bnameID = bname["id"].stringValue 
     let bnameName = bname["Title"].stringValue 

     let dict = ["id":bnameID,"Title":bnameName] 
     self.items.append(dict as [String : String]) 


     self.tableView.reloadData() 

    } 
} 

這是輸出當我打印項目陣列

[["Title": "The Kooks", "id": "2454"], 
["Title": "The Killers", "id": "34518"], 
["Title": "Madonna", "id": "9"]] 

問題1:

在這個函數

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { } 

如何讓電池標籤表明是在陣列的「標題」部分的項目?

問題2

在這個函數:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { } 

我如何從對應於已經被點擊了哪個單元陣列值「身份證」?因此,例如,如果兇手被點擊細胞,然後我就可以建立一個變量的值:

回答

2

要獲得title

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    print(items[indexPath.row]["Title"]) 
} 

要獲得id

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

    print(items[indexPath.row]["id"]) 
} 
+1

謝謝。我很親密,我在做:print(items [「id」] [indexPath.row]):S – JamesG

+0

哦! 'items [「id」]'適用於'Dictionary'。但是對於數組,您需要每次都指定索引,所以下次請注意! –

0

對問題1-回答

您可以在您的項目陣列使用indexPath的行值獲取項目的標題:

let item = items[indexPath.row] 
//Fetch the id 
let title = item["Title"]! 

答覆問題在任何情況下2 -

let item = items[indexPath.row] 
//Fetch the id 
let id = item["id"]! 

所以,你會使用indexPath的行值從項目數組中獲取關聯的項目。

1
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
{ 

    let cell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier("MyCell", forIndexPath: indexPath)! 
    let dictn : NSDictionary = items[indexPath.section] as! NSDictionary 

    cell.textLabel?.text = dictn.objectForKey("Title") as? String 
    return cell 
} 
相關問題