我有一个UITableViewController,它有一个名为didselectrowatindex的函数,它应返回一个单元格上的文本,但它返回nil。如何在Swift UITableViewController中返回所选单元格的文本?
class TableViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let indexPath = tableView.indexPathForSelectedRow();
let currentCell = tableView.cellForRowAtIndexPath(indexPath!) as UITableViewCell!;
println(currentCell.textLabel!.text)
}
}
编辑:我忘了提到我正在使用静态细胞,这意味着数据已经设置好,所以我认为不需要使用cellforrowatindex。
答案 0 :(得分:1)
看起来你需要实现cellForRowAtIndexPath
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = self.tableView.dequeueReusableCellWithIdentifier("cell")
let text = self.tableContents[indexPath.row] as! String
//tableContents is just the array from which you're getting what's going in your tableView, and should be declared outside of your methods
cell.textLabel?.text = text
return cell
}
还要添加
self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
进入viewDidLoad 希望这有帮助!
好的,所以这样看,也许会尝试替换
let currentCell = tableView.cellForRowAtIndexPath(indexPath!) as UITableViewCell!;
带
let currentCell = super.tableView(self.tableView, cellForRowAtIndexPath: indexPath)
并按照Lancelot在你的问题评论中的建议摆脱它上面的一行。
我使用了以下代码并且有效:
class TableViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let currentCell = super.tableView(self.tableView, cellForRowAtIndexPath: indexPath)
let text: String = currentCell.textLabel!.text as String!
print(text)
}
}
答案 1 :(得分:0)
如果您的标题数据源数组为:
var arrTitlesDataSource = ["t1","t2","t3"]
所以你正在使用它们来设置cellForRow
这样的标题:
cell.textLabel?.text = arrTitlesDataSource[indexPath.row]
您可能会以这种方式获得标题:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var title = arrTitlesDataSource[indexPath.row]
println(title)
}