我需要获取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? 谢谢!
答案 0 :(得分:1)
这根本不应该构建。 switch
是关键字。如果你真的想将这个单词用作变量名,你应该把它放在反引号中。
似乎你所要做的就是访问其中的单元格的indexPath
。在这种情况下,您可以拥有该属性,并在tableView
方法中创建单元格时进行设置。
但从设计的角度来看,indexPath
是tableView
用于跟踪事物的内容,而您的细胞通常应该是“盲目的”。因为它并不关心它(这就是为什么UITableViewCell
没有内置这样的属性的原因。)你可能能够做你需要的事情不要将不必要的信息暴露给你的手机。
答案 1 :(得分:0)
第一个问题是交换机的视图很可能不是UITableViewCell
本身。 UITableViewCell
有一些子视图,其中一个是contentView
。 contentView可能是你的UISwitch的超级视图。但是,这很容易解决;如果你有一个包含开关的单元格,那么按照定义你已经有了对单元格本身的引用。
第二个问题是单元格的superview不能保证是tableView。如果你真的需要一个单元格来引用tableview,那么你应该将tableView作为一个弱属性添加,并在创建单元格时传递对tableview的引用。