斯威夫特:设置标签& tableView Cell中的自定义参数

时间:2016-02-03 06:47:10

标签: ios swift uitableview

这是前一个问题的构建。

我有一个像这样定义的数组:

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) { }

如何从与单击的单元格对应的数组中获取值'id'?例如,如果单击了杀手单元格,那么我可以设置一个值为的变量: 34518

3 个答案:

答案 0 :(得分: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 :(得分: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
}

答案 2 :(得分:0)

回答问题1 -

您可以使用indexPath的行值来获取items数组中项目的标题:

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的行值从items数组中获取关联项。