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

标签 ios swift uitableview swift3 uibutton

我有一个自定义 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/

相关文章:

ios - 可以 renderInContext : maintain corner radius and shadows?

ios - 如何使用自动布局调整 ScrollView 内容大小

swift - 是否可以在 Swift macOS 中使 NSBox 可点击(如 NSButton)?

ios - 使用核心数据时在 UITableView 的顶部添加一个新行

ios - 在 Swift 中使用 Google Calendar API 时收到错误 "Daily Limit For Unauthenticated Use Exceeded"

ios - 如何使用 AFNetworking 或 STHTTPRequest 来请求 SOAP Web 服务?

iphone - 必须在 CGContextBeginPath 之后调用 CGContextClosePath 吗?

ios - 在 uibutton SWIFT 周围包装文本

ios - fatal error : Index out of range two custom cells

ios - 是否可以在同一行内显示 UITableViewCellStyleValue1 和 UITableViewCellStyleSubtitle