微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

回调关闭函数在单元格中不起作用

如何解决回调关闭函数在单元格中不起作用

我有一个 tableview 单元格,其中包含一个用于显示警报表的特定按钮。 我了解到不能在表格视图单元格内按下按钮本身。它必须从视图控制器调用。 所以我添加一个回调闭包,如下所示:

class FeedViewCell: UITableViewCell {

    var callback : (() -> ())?
    static let reuseIdentifier: String = "FeedTableViewCell" 

    lazy var menuButton: UIButton = {
        let btn = UIButton()
        btn.isUserInteractionEnabled = true
        btn.addTarget(self,action: #selector(menuTapped),for: .touchUpInside)
        return btn
    }()

 override init(style: UITableViewCell.CellStyle,reuseIdentifier: String?) {
        super.init(style: style,reuseIdentifier: reuseIdentifier)

        addSubview(menuButton)

        }

    @objc func menuTapped() {
       print("menu tapped")
       callback?()
    }

我怀疑这可能是表格视图单元格注册的问题。如果不是,请告诉我。在视图控制器中,我这样做了:

class FeedViewController: UIViewController {
// some code...

  tableView.register(FeedViewCell.self,forCellReuseIdentifier: FeedViewCell.reuseIdentifier)

}

extension FeedViewController: UITableViewDelegate,UITableViewDataSource {    
    func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: FeedViewCell.reuseIdentifier,for: indexPath) as! FeedViewCell
        cell.callback = {
            
            print("menu")
            let actionSheet = UIAlertController(title: "",message: "",preferredStyle: .actionSheet)
            
            actionSheet.addAction(UIAlertAction(title: "dismiss",style: .cancel,handler: { action in
                print("tap dismiss")
            }))
            
            actionSheet.addAction(UIAlertAction(title: "Follow",style: .default,handler: { action in
                print("tap follow")
            }))
            
            self.present(actionSheet,animated: true,completion: nil)
        }
        return cell
    }
}

所以主要的问题是,为什么按钮不起作用?它甚至不打印“菜单

感谢您的所有回答

解决方法

这一行是错误的。

addSubview(menuButton)

相反:

contentView.addSubview(menuButton)
,

尝试将您的按钮添加到单元格的内容视图中,如下所示: self.contentView.addSubview(self.menuButton)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。