如何在Swift中的自定义单元格中获取value组件的indexPath?

时间:2014-08-21 22:09:02

标签: ios swift xcode6 custom-cell

我需要获取indexPath.row类内部的CustomCellS组件(switch,checks ..)。我在自定义单元类中尝试下面的代码,但是我收到错误:

class CustomCellS: UITableViewCell{
    @IBOutlet weak var switch: UISwitch!

    var cell: UITableViewCell = switch.superview as UITableViewCell //crash
    var tableView: UITableView = cell.superview as UITableView
    var indexPath: NSIndexPath = tableView.indexPathForCell(cell)

  ...
 }
  

错误:线程1:EXC_Breakpoint(代码= EXC_i386_BPT,子代码= 0x0)

如何获取此组件的indexPath.row? 谢谢!

2 个答案:

答案 0 :(得分:1)

这根本不应该构建。 switch是关键字。如果你真的想将这个单词用作变量名,你应该把它放在反引号中。

似乎你所要做的就是访问其中的单元格的indexPath。在这种情况下,您可以拥有该属性,并在tableView方法中创建单元格时进行设置。

但从设计的角度来看,indexPathtableView用于跟踪事物的内容,而您的细胞通常应该是“盲目的”。因为它并不关心它(这就是为什么UITableViewCell没有内置这样的属性的原因。)你可能能够做你需要的事情不要将不必要的信息暴露给你的手机。

答案 1 :(得分:0)

第一个问题是交换机的视图很可能不是UITableViewCell本身。 UITableViewCell有一些子视图,其中一个是contentView。 contentView可能是你的UISwitch的超级视图。但是,这很容易解决;如果你有一个包含开关的单元格,那么按照定义你已经有了对单元格本身的引用。

第二个问题是单元格的superview不能保证是tableView。如果你真的需要一个单元格来引用tableview,那么你应该将tableView作为一个弱属性添加,并在创建单元格时传递对tableview的引用。