【发布时间】:2018-01-11 11:56:02
【问题描述】:
我在我的自定义 tableViewCell 上添加了一个按钮,我希望在点击按钮后,它会根据按钮所在的单元格传递数据,因此要找出哪个单元格是按钮,我添加了一个标签,但是我收到了这个错误
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "goToLast" && sender is IndexPath {
let dvc = segue.destination as! FinalClass
dvc.index = (sender as! IndexPath).row
dvc.places = sortedArray
dvc.userLocation = currentLocation
}
if segue.identifier == "goToReview" {
let index3 = IndexPath(row: sender.tag, section: 0)
let rev = segue.destination as! ReviewClass
}
}
如何调整?
(cell.reviewButton.tag = indexPath.row) 这是我在 cellForRowAt 中添加的标签
更新
这是我的 VC 中的按钮操作
@IBAction func ReviewButtonTap(_ sender: UIButton) {
performSegue(withIdentifier: "goToReview" , sender: self)
}
这是我的自定义 tableViewCell 类中的插座
@IBOutlet weak var reviewButton: UIButton!
我不明白如何将此按钮与
else if segue.identifier == "goToReview", let button = sender as? UIButton, let rev = segue.destination as? ReviewClass {
let index3 = IndexPath(row: button.tag, section: 0)
【问题讨论】:
-
将sender转换为按钮first,然后获取按钮标签。
-
即使您可以在用户点击按钮时全局存储选定的索引,而不是在 segue 中获取索引。这是编写代码的正确方法。
-
你需要转换成 UIButton 然后你应该可以使用 .tag
标签: ios swift uitableview swift4