【问题标题】:Using a button on a cell to pass data in swift使用单元格上的按钮快速传递数据
【发布时间】:2017-07-04 16:47:43
【问题描述】:
我有 2 个 VC,其中一个叫做 HomeVC,另一个是 DetailVC。我在 HomeVC 上有一个表格视图,它显示带有标签和按钮的单元格。 DetailVC 只是有一个标签。我在表格视图上显示一个字符串数组,当单击单元格上的按钮时,我想将标签中的文本带到 DetailVC 的标签。
现在我可以使用 didSelectRowAt 方法或在 prepare segue 方法中使用 indexPathForSelectedRow 轻松完成此操作。但是这两种情况都需要我点击单元格本身而不是按钮。
我只是 swift 的初学者。但是要解释这一点,不需要太多代码。所以如果可以的话,请详细解释一下。
提前致谢。
【问题讨论】:
标签:
ios
swift
xcode
button
【解决方案1】:
在 cellForRowAt 中将目标添加到按钮,即
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cellID", for: indexPath)
cell.button.tag = indexPath.row
cell.button.addTarget(self, action: Selector("buttonAction:"), for: .touchUpInside)
// other cell element setup
return cell
}
在按钮操作时,使用按钮标签从数组中获取项目,即
func buttonAction(sender: UIButton) {
let data = tableArray[sender.tag]
// logic to pass present detailVC
}
希望这会奏效!!
【解决方案2】:
如果您使用的是集合视图,则可以使用以下内容
// Set The Click Action On Button
cell.bProfileImage.addTarget(self, action: #selector(connected(sender:)), for:
.touchUpInside)
cell.bProfileImage.tag = indexPath.row
然后在你的函数中
// Function For TouchUpInside For Cell
@objc func connected(sender: UIButton) {
let data = individualChatsListArray[sender.tag]
print(data.name)
}