为什么 UIButton 上的点击事件不会触发?

问题描述

为什么不调用 clickDone,我尝试了两种注册事件的方式。都没有用。

import UIKit

class ViewController: UIViewController {

    let myTableView: UITableView = {
        let _myTableView = UITableView()
        return _myTableView
    }()
    
    override func viewDidLoad() {
        myTableView.register(MyTableViewCell.self,forCellReuseIdentifier: "Cell")
        myTableView.dataSource = self
        myTableView.delegate = self
        myTableView.translatesAutoresizingMaskIntoConstraints = false
        
        view.addSubview(myTableView)
        NSLayoutConstraint.activate([
            myTableView.topAnchor.constraint(equalTo: self.view.topAnchor),myTableView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),myTableView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),myTableView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor),])
        super.viewDidLoad()
    }
}


extension ViewController: UITableViewDataSource,UITableViewDelegate {
    func tableView(_ tableView: UITableView,numberOfRowsInSection section: Int) -> Int {
        return 100
    }
    
    @objc func clickDone(_ sender: Any) {
        NSLog("I am clicked")
    }
    
    func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        
        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! MyTableViewCell
        
        cell.clickButton.addTarget(self,action: #selector(clickDone(_:)),for: .touchUpInside)
        return cell

    }
    
}


class MyTableViewCell: UITableViewCell {
    let clickButton: UIButton = {
        let _b = UIButton()
        _b.setTitle("Click",for: .normal)
        
        return _b
    }()
    
    @objc func clickDone(_ sender: Any) {
        NSLog("I am clicked")
    }
    
    override init(style: UITableViewCell.CellStyle,reuseIdentifier: String?) {
     super.init(style: style,reuseIdentifier: reuseIdentifier)
        addSubview(clickButton)
        
        clickButton.translatesAutoresizingMaskIntoConstraints = false
        
        NSLayoutConstraint.activate([
            clickButton.topAnchor.constraint(equalTo: topAnchor),clickButton.bottomAnchor.constraint(equalTo: bottomAnchor),clickButton.leadingAnchor.constraint(equalTo: leadingAnchor),clickButton.trailingAnchor.constraint(equalTo: trailingAnchor),])
        
        clickButton.addTarget(self,for: .touchUpInside)
        
    }
    
    required init?(coder aDecoder: NSCoder) {
     fatalError("init(coder:) has not been implemented")
     }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)