在行委托方法tableView(_:cellForRowAt:)
中,可以通过以下步骤获取单元格中的数据:
tableView(_:numberOfRowsInSection:)
和tableView(_:cellForRowAt:)
方法。tableView(_:cellForRowAt:)
方法中,获取当前行的单元格对象。可以使用dequeueReusableCell(withIdentifier:for:)
方法从重用队列中获取单元格,或者创建一个新的单元格对象。viewWithTag(_:)
方法来获取按钮对象。@IBAction
方法。在该方法中,你可以通过按钮的sender
参数来获取按钮本身。superview
属性来获取按钮所在的视图,然后使用superview
属性再次获取到单元格对象。以下是一个示例代码,展示了如何在行委托方法中获取单元格中的数据:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CellIdentifier", for: indexPath)
// 获取按钮对象
if let button = cell.viewWithTag(100) as? UIButton {
// 为按钮添加@IBAction方法
button.addTarget(self, action: #selector(buttonTapped(_:)), for: .touchUpInside)
}
// 获取数据
let data = dataSource[indexPath.row] // 假设dataSource是一个包含数据的数组
// 使用数据来配置单元格
cell.textLabel?.text = data.title
cell.detailTextLabel?.text = data.subtitle
return cell
}
@IBAction func buttonTapped(_ sender: UIButton) {
// 获取按钮所在的单元格
if let cell = sender.superview?.superview as? UITableViewCell {
// 获取单元格的indexPath
if let indexPath = tableView.indexPath(for: cell) {
// 获取数据
let data = dataSource[indexPath.row]
// 在这里可以使用获取到的数据进行操作
print(data)
}
}
}
在上述示例代码中,我们假设单元格中有一个标签为100的按钮,并且数据源是一个名为dataSource
的数组。在tableView(_:cellForRowAt:)
方法中,我们获取按钮对象并为其添加了一个@IBAction
方法buttonTapped(_:)
。在buttonTapped(_:)
方法中,我们通过按钮对象获取到其所在的单元格,并通过单元格的indexPath获取到对应的数据。
请注意,这只是一个示例代码,实际情况中可能需要根据你的具体需求进行适当的修改和调整。
对于Swift 3中的@IBAction
按钮,你可以在单元格的行委托方法中获取数据,并在按钮的@IBAction
方法中使用该数据进行操作。
领取专属 10元无门槛券
手把手带您无忧上云