每次尝试执行以下操作时,它会将索引传递为0的索引传递给下一个视图控制器。我不确定自己做错了什么,有人可以帮忙吗?非常感谢!这是相关代码:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "a", for: indexPath) as! TableViewCell
cell.useButton.tag = tagBaseValue + indexPath.row
cell.useButton.addTarget(self, action: #selector(ListViewController.useButtonPressed(_:)), for: UIControlEvents.touchUpInside)
return cell
}
@IBAction func useButtonPressed(_ sender: Any) {
performSegue(withIdentifier: "toDisplay", sender: self)
}
func prepare(for segue: UIStoryboardSegue, sender: UIButton) {
if segue.identifier == "toDisplay" {
let nextVC = segue.destination as! NextVC
nextVC.index = sender.tag
}
}
答案 0 :(得分:1)
prepare(for
永远不会被调用,因为签名错误(sender
的类型为Any?
)
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "toDisplay" {
let nextVC = segue.destination as! NextVC
nextVC.index = (sender as! UIButton).tag
}
}
并且IBAction
必须是
@IBAction func useButtonPressed(_ sender: UIButton) {
performSegue(withIdentifier: "toDisplay", sender: sender)
}
答案 1 :(得分:0)
必须覆盖进行准备的过程,并且在发送发件人时按按钮操作,您正在发送自身,该自身指向viewcontroller本身,因此您始终将标记接收为0。
进行更改以准备segue,将发件人设置为Any,然后改写它。在调用performSegue的按钮动作中,请提及发送者为发送者(即按钮)而不是自身(即视图控制器)。
希望有帮助...