gpt4 book ai didi

ios - uitableviewCell 中用于执行 segue 的 Swift UIbutton 不起作用

转载 作者:行者123 更新时间:2023-12-01 17:47:38 24 4
gpt4 key购买 nike

我有一个自定义 tableviewcell,当我单击按钮时,我在单元格内有按钮,下一个 View Controller 不会显示他的内容,但是如果我单击单元格,然后单击按钮,下一个显示正确内容的 View Controller 是我的代码:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier", for: indexPath) as! TableViewCell
cell.label.text = numberArray[indexPath.row]
cell.button.tag = indexPath.row

cell.button.addTarget(self,action:#selector(TableViewController.someAction(sender:)),
for:.touchUpInside)
return cell
}

这是我的按钮操作:
func someAction(sender : UIButton){

self.performSegue(withIdentifier: "showDetail", sender: self)

}

这是我的转场功能:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {


if segue.identifier == "showDetail" {

if let indexPath = tableView.indexPathForSelectedRow
{
(segue.destination as! ViewController).number = numberArray[indexPath.row]

}

}
}

最佳答案

问题是在 prepare(for:sender:)你得到indexPath使用 indexPathForSelectedRow现在,如果您直接单击按钮,则未选中的单元格需要传递 indexPath performSegue(withIdentifier:sender:) 的单元格.

func someAction(sender:  UIButton) {
let point = sender.superview?.convert(sender.center, to: self.tableView)
if let indexPath = self.tableView.indexPathForRow(at: point!) {
//pass indexPath as sender with performSegue
self.performSegue(withIdentifier: "showDetail", sender: indexPath)
}
}

现在在 prepare(for:sender:)senderindexPath你们一切都好。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showDetail" {
if let indexPath = sender as? IndexPath
{
(segue.destination as! ViewController).number = numberArray[indexPath.row]
}
}
}

注:如果您忽略使用 tag,那就是击球手.

关于ios - uitableviewCell 中用于执行 segue 的 Swift UIbutton 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44047649/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com