Swift 为 UITableViewCell 分配两个值
Posted
技术标签:
【中文标题】Swift 为 UITableViewCell 分配两个值【英文标题】:Swift Assign two values to UITableViewCell 【发布时间】:2016-02-03 04:21:41 【问题描述】:是否可以为 UITableView 中的单元格分配两个值?
我有一个结构如下的 json 文件:
"band": [
"Name": "The Kooks",
"id": "1258"
]
我可以让标签显示在单元格中并将其传递给新的视图控制器,但是我如何也分配 id 以便我也可以传递它?
我是 swift 新手,所以请不要吃我。
编辑 1:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
let cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell")! as UITableViewCell
cell.textLabel?.text = self.items[indexPath.row]
return cell
items 是空的,所以我是这样理解的:
Alamofire.request(.GET, testurl, parameters: ["bandName": bandName])
.responseJSON response in
switch response.result
case .Success:
if let value = response.result.value
let json = JSON(value)
for (_,bands) in json
for (_,bname) in bands
let bandName = bname["Name"].stringValue
print(bandName)
self.items.append(bandName)
self.tableView.reloadData()
case .Failure(let error):
print(error)
【问题讨论】:
请使用String(格式: "String%@%@",variables); 呃?需要解释一下吗? 您没有将其分配给单元格。您将 ID 保留在模型中,然后通过prepareForSegue
中选定单元格的 indexPath
检索它。
你的意思是你可以在每个单元格的标签中传递名称或ID吗?请在 cellForRowAtIndexPath 和 didSelectRowAtIndexPath 中发布您的代码
@khuong291 单元格显示名称,但我想将 id 传递给新视图。
【参考方案1】:
您不应该将 bname Dictionary 中的每个值都添加到 self.items。 尝试将 bname 添加到 self.items,代码:
Alamofire.request(.GET, testurl, parameters: ["bandName": bandName])
.responseJSON response in
switch response.result
case .Success:
if let value = response.result.value
let json = JSON(value)
for (_,bands) in json
for (_,bname) in bands
self.items.append(bname)
self.tableView.reloadData()
case .Failure(let error):
print(error)
并在 cellForRowAtIndexPath 中使用它: func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
let cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell")! as UITableViewCell
if let dic = self.items[indexPath.row] as? NSDictionary
if let id = dic["id"] as? String
cell.idLabel.text = id
if let name = dic["Name"] as? String
cell.nameLabel.text = name
return cell
【讨论】:
cell.idLabel:“UITableViewCell”类型的值没有成员“idLabel” idLabel & nameLabel 只是我的例子,你可以展示一下:cell.textLabel?.text = "(id) & (name)"【参考方案2】:使用这些属性创建类或模型并在对象中分配值将对象保留在 NSarray 中,作为数据源使用选定的索引路径从数据源获取对象,并使用 prepareForSegue 将对象传递给新的视图控制器。
【讨论】:
不,这是 Objective-C 而不是 swift。以上是关于Swift 为 UITableViewCell 分配两个值的主要内容,如果未能解决你的问题,请参考以下文章
FirebaseUi - Swift - 将 UITableViewCell 的值转换为自定义类
Swift 自定义 UITableViewCell 标签始终为 nil
uitableviewcell中的swift uitableview,自动布局始终高度为0