试图从 UITableView 返回选定的单元格,但它只返回 nil

Posted

技术标签:

【中文标题】试图从 UITableView 返回选定的单元格,但它只返回 nil【英文标题】:Trying to return selected cell from UITableView but it just returns nil 【发布时间】:2015-06-25 19:53:12 【问题描述】:

我有一个自定义单元类,它有一个名为 setCell 的函数。

这需要一个词和一个图像,并为它们设置一个标签和一个图像视图。

这工作正常,并在单元设置期间被调用。

问题是当我尝试获取当前选定的单元格文本时,它只返回 nil。

下面是当前的 'didSelectRow' 函数:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) 


    let indexPath = myTableView.indexPathForSelectedRow();

    let currentCell = myTableView.cellForRowAtIndexPath(indexPath!) as UITableViewCell!;

    println(currentCell.textLabel!.text) //This returns nil

下面是我的自定义单元设置函数:

func setCell(text: String, imagetext: String) 
    if var image = self.myImage 
        image.image = UIImage(named: imagetext)
    

    if var label = self.myLabel 
        label.text = text
        println(label.text) //Prints out the items that are in the cells, which is what I want it to do.
    

有人知道为什么我的代码返回 nil 吗?

编辑:感谢到目前为止的建议,但我刚刚发现,如果我在调用 setCell 函数后打印出 cell.labelText.text,它只会打印出 nils。

cell.setCell(category, imagetext: theimage)
    println(cell.textLabel!.text) //I have 7 items in the list so it just print out nil 7 times.

为什么在上面调用函数后没有设置?

【问题讨论】:

在您尝试打印其文本之前,currentCell 是否为零? 在尝试打印文本之前设置一个断点,并查看单元格是否具有您期望的属性 如果我这样做println(currentCell):<computing.TableViewCell: 0x7f8a38565880; baseClass = UITableViewCell; frame = (0 0; 600 144); autoresize = W; layer = <CALayer: 0x7f8a3861bd30>>,这就是打印到控制台的内容。 Computing 是应用程序的名称,TableViewCell 是我的自定义单元格文件的名称。 (我单击的每个选项都会略有变化。) 你为什么打电话给indexPathForSelectedRow()?请求的索引路径作为参数传递,是非可选值 打印单元格不会提供正确的信息。如果您在尝试打印单元格的位置设置断点,并且当应用程序暂停执行时,它将在调试器左侧为您提供所有当前实例化对象的概览。您应该可以通过将其放下并查看它来查看该单元格是否具有您所期望的属性。 【参考方案1】:

indexPath 和 tableView 作为参数传入,应该用来做你想做的事情:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) 
    var currentCell = tableView.cellForRowAtIndexPath(indexPath!) as CustomTableViewCellClass!;

    println(currentCell.textLabel!.text) //This returns nil

【讨论】:

以上是关于试图从 UITableView 返回选定的单元格,但它只返回 nil的主要内容,如果未能解决你的问题,请参考以下文章

多选模式下的 UITableView 删除选定单元格中所有子视图的背景颜色

如何在一个字符串中获取 UITableView 的选定单元格的值

如何知道 uitableview 是不是有选定的单元格

在选定的单元格行返回 TableView

self.tableView.indexPathForCell(cell) 返回错误的单元格?

如何为 UITableView 中的选定单元格制作透明背景