如何在 Swift 的自定义单元格中获取值组件的 indexPath?
Posted
技术标签:
【中文标题】如何在 Swift 的自定义单元格中获取值组件的 indexPath?【英文标题】:How to get the indexPath of value component in a custom cell in Swift? 【发布时间】:2014-08-21 22:09:02 【问题描述】:我需要获取位于我的CustomCellS
类中的组件(开关、检查..)的indexPath.row
。我正在自定义单元格类中尝试以下代码,但出现错误:
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(code=EXC_i386_BPT, subcode=0x0)
如何获取这个组件的indexPath.row? 谢谢!
【问题讨论】:
查看我对此的回答:***.com/questions/16520151/… 【参考方案1】:这根本不应该建立。 switch
是一个关键字。如果你真的想用这个词作为变量名,你应该把它放在反引号内。
看来您要做的只是访问其中单元格的indexPath
。在这种情况下,您可以在 tableView
方法中创建单元格时为其设置一个属性。
但是从设计的角度来看,indexPath
是您的 tableView
用来跟踪事物的东西,您的单元通常应该对它“视而不见”,因为它不是它所关心的(这就是为什么 UITableViewCell
没有内置这样的属性。)您可能能够做您需要做的事情,而不会向您的单元格暴露不必要的信息。
【讨论】:
【参考方案2】:第一个问题是开关的视图很可能不是UITableViewCell
本身。 UITableViewCell
有几个子视图,其中之一是它的contentView
。该 contentView 可能是您的 UISwitch 的超级视图。但是,这很容易解决;如果您有一个包含开关的单元格,那么根据定义,您已经拥有对该单元格本身的引用。
第二个问题是cell的superview不能保证是tableView。如果您确实需要一个单元格来引用 tableview,那么您可能应该将 tableView 添加为弱属性,并在创建单元格时传递对 tableview 的引用。
【讨论】:
我看到这个有代码吗?我不知道我是否需要在 tableViewCOntroller 或 CustomCellCONtroller 中引用它以及如何做到这一点..以上是关于如何在 Swift 的自定义单元格中获取值组件的 indexPath?的主要内容,如果未能解决你的问题,请参考以下文章
如何在swift ios中的自定义TableView单元格中显示多个字符串值到多个标签?
Swift - 如何从单元格内单击 UIImageView 上的自定义 UITableViewCell 获取行数据
iOS:如何从 tableview 的自定义单元格中的 UITextField 访问值