下面的代码应该将PFObject中的name字段传递给cellForRowAtIndexPath,并将textLabel.text字段设置为名称(即tableView行可能会读取" sneeze1")。我可以使用heightForRowAtIndexPath方法更改每一行的高度,并且还可以看到正确的cellForRowAtIndexPath调用次数(在我的特定情况下,在Parse的数据浏览器中加载了3行)字段,但我无法更改textLabel.text。
在textLabel更改文本之前是否需要完成其他一些步骤?
override func tableView(tableView: UITableView!, heightForRowAtIndexPath indexPath: NSIndexPath!) -> CGFloat {
return 60
}
override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!, object: PFObject!) -> PFTableViewCell! {
var cellIdentifier = "EventCell"
var cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as? PFTableViewCell
if !cell {
cell = PFTableViewCell(style: .Subtitle, reuseIdentifier: cellIdentifier)
}
var name = object["name"] as? String
cell!.textLabel.text = name
println("textLabel: \(cell!.textLabel.text)" + " name: \(name)")
return cell
}
答案 0 :(得分:1)
您必须使用原始代理签名,否则您的方法无法被调用。而不是
override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!, object: PFObject!) -> PFTableViewCell!
使用
override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!
答案 1 :(得分:0)
问题是as?
会返回一个可选类型,因此name
的类型为String?
。
如果你真的想要处理缺少的名字,请尝试这样做:
if let name = object["name"] as? String {
cell!.textLabel.text = name
}
答案 2 :(得分:0)
当我设置使用UITableViewCell cellForRowAtIndexPath时,我能够更改文本。看起来问题在于Parse的PFTableViewCell可能与Swift混合。它不允许我更改PFTableViewCell上的文本。
作为旁注,即使我的PFQueryTableViewController与上面的PFTableViewCell cellForRowAtIndexPath并排存在以下方法,代码也能正常工作。不知何故,代码实际上只是运行UITableViewCell cellForRowAtIndexPath方法。
override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
var cellIdentifier = "EventCell"
var cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as? UITableViewCell
if !cell {
cell = UITableViewCell(style: .Subtitle, reuseIdentifier: cellIdentifier)
}
var name = "HELLO"//object["name"] as? String
cell!.textLabel.text = name
println("textLabel: \(cell!.textLabel.text)" + " name: \(name)")
//cell.imageView.file = object.objectForKey(self.imageKey) as PFFile
return cell
}