此代码从json文件中读取并返回所有单元格中的“name”值,这样可以正常工作,但是当我选择它继续返回nill的值时,我想得到该值。我在其他问题中尝试了其他一些解决方案,因为它们在Objective C中,这很快,我试过但根本没用。我想要的只是细胞内的价值。 另外,我想传递“id”的值,即所选单元格的数据[“id”],这是可能的。
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("ImageCell", forIndexPath: indexPath) as UITableViewCell //1
let data = datas[indexPath.row]
if let captionLabel = cell.viewWithTag(100) as? UILabel {
if let caption = data["name"].string{
captionLabel.text = caption
}
}
return cell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let indexPath = self.tableView.indexPathForSelectedRow();
let currentCell = self.tableView.cellForRowAtIndexPath(indexPath!) as UITableViewCell!;
println(currentCell.textLabel!.text)
self.viewofloc.hidden = true
}
答案 0 :(得分:2)
方法tableView:didSelectRowAtIndexPath:为所选单元格提供索引路径。无需使用self.tableView.indexPathForSelectedRow重新计算它。
尝试使用以下内容编辑tableView:didSelectRowAtIndexPath:
:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let currentCell = self.tableView.cellForRowAtIndexPath(indexPath) as UITableViewCell!;
}
我曾尝试使用新的Xcode项目(Master-Detail Application)并获得了一个单元格。
答案 1 :(得分:1)
删除标签,只需创建一个简单的UITableViewCell
子类,然后直接访问UILabel。您将看到使用标签扩展您的单元格会变得很麻烦。
此外,您的indexPath已在didSelectRowAtIndexPath
中提供,因此请使用提供的tableView
和indexPath
抓取您的单元格。
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("ImageCell", forIndexPath: indexPath) as? ImageCell
let data = datas[indexPath.row]
if let caption = data["name"] as? String {
cell.labelCaption.text = caption
}
return cell!
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let currentCell = tableView.cellForRowAtIndexPath(indexPath) as! ImageCell;
println(currentCell.textLabel!.text)
self.viewofloc.hidden = true
}
class ImageCell: UITableViewCell {
@IBOutlet weak var labelCaption: UILabel!
}