gpt4 book ai didi

ios - UITableViewCell addTarget 中的按钮不起作用

转载 作者:搜寻专家 更新时间:2023-11-01 07:03:47 26 4
gpt4 key购买 nike

在我的项目中,我有带有 3 个按钮的单元格的表格 View 。当我为他们添加目标操作时,它不起作用。

为了避免与其他项目的不良交互,我创建了一个干净的项目并尝试将 addTarget 添加到 TableViewCell 中的按钮。即使在这里,它也不起作用。在这个项目中,我为每一行设置了一个按钮。

addTarget 方法应该调用presentWebBrowser 方法。但是没有。有什么想法吗?

这是我的代码:

import UIKit

class TableViewController: UITableViewController {

let array = ["button1","button2","button3"]

override func viewDidLoad() {
super.viewDidLoad()
tableView.register(MyCell.self, forCellReuseIdentifier: "cellID")

}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

// MARK: - Table view data source



override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return array.count
}


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let cell = tableView.dequeueReusableCell(withIdentifier: "cellID", for: indexPath) as! MyCell

return cell

}

}

class MyCell: UITableViewCell {



var button: UIButton = {
let button = UIButton(type: UIButtonType.system)
button.setTitle("Button", for: UIControlState.normal)
button.addTarget(self, action: #selector(presentWebBrowser), for: .touchUpInside)

// button.titleLabel?.font = UIFont.boldSystemFont(ofSize: 8)

return button
}()


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

addSubview(button)
button.translatesAutoresizingMaskIntoConstraints = false
button.topAnchor.constraint(equalTo: topAnchor).isActive = true
button.leftAnchor.constraint(equalTo: leftAnchor).isActive = true
button.bottomAnchor.constraint(equalTo: bottomAnchor).isActive = true



}


required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}

@objc func presentWebBrowser(sender: UIButton!) {
print("tapped")

}



}

最佳答案

先去掉按钮变量惰性初始化中的add目标

var button: UIButton = {
let button = UIButton(type: UIButtonType.system)
button.setTitle("Button", for: UIControlState.normal)
return button
}()

将init中的代码修改为

required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
addSubview(button)
button.addTarget(self, action: #selector(presentWebBrowser), for: .touchUpInside)
button.translatesAutoresizingMaskIntoConstraints = false
button.topAnchor.constraint(equalTo: topAnchor).isActive = true
button.leftAnchor.constraint(equalTo: leftAnchor).isActive = true
button.bottomAnchor.constraint(equalTo: bottomAnchor).isActive = true

}

请注意在惰性初始化之外对 button 使用 addTarget。

关于ios - UITableViewCell addTarget 中的按钮不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49351113/

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