titlelabel settitle color buttons ios swift uibutton

ios - settitle - swift button action



UIButton addTarget Selector no funciona (6)

Ahora que ha publicado información relevante en su pregunta, el problema es bastante claro. Usted tiene un problema de administración de memoria.

En viewDidLoad de su viewDidLoad crea una instancia local de SquareBox . Esta instancia local sale del alcance al final de viewDidLoad . Como no hay otra referencia a esta instancia, se desasigna al final de viewDidLoad .

Como la instancia de SquareBox ha sido desasignada, no está disponible para actuar como el objetivo del botón. Y su método de click nunca se llama.

La solución es mantener una referencia en su controlador de vista:

class GameViewController: UIViewController { let boxRow = SquareBox() override func viewDidLoad() { super.viewDidLoad() boxRow.createBoxes() } }

SquareBox.swift

class SquareBox { func createBoxes() { for _ in 0..<xy { let button = UIButton() button.backgroundColor = .white button.setTitleColor(UIColor.black, for: .normal) button.layer.borderWidth = 0.5 button.layer.borderColor = UIColor.black.cgColor stack.addArrangedSubview(button) button.addTarget(self, action: #selector(click(sender:)) , for: .touchUpInside) } } @objc func click(sender : UIButton) { print("Click") } }

ViewController.swift

class GameViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let boxRow = SquareBox() boxRow.createBoxes() } }

También probé @IBAction en lugar de @objc, no funciona, pero si utilizo la función "hacer clic" en ViewController.swift cuando creé este objeto, funciona, pero necesito esta función dentro de esta clase.


Reemplace con esto:

btn.addTarget(self, action: #selector(self.click(sender:)), for: .touchUpInside)

Creo que hay algo más que el efecto en su método de selección intente encontrar en su código porque su código también está trabajando en mi proyecto.


Supongo que el problema es cómo está configurando el diseño de sus botones. Prueba esto:

func createBoxes() { stack.backgroundColor = UIColor.red for _ in 0..<xy { // Create the button let button = UIButton() button.backgroundColor = UIColor.red // Add constraints button.translatesAutoresizingMaskIntoConstraints = false button.heightAnchor.constraint(equalToConstant: 44.0).isActive = true button.widthAnchor.constraint(equalToConstant: 44.0).isActive = true // Setup the button action button.addTarget(self, action: #selector(SquareBox.click(sender:)), for: .touchUpInside) // Add the button to the stack stack.addArrangedSubview(button) } } @objc func click(sender : UIButton) { print("Click") }


var btnfirst:UIButton! override func viewDidLoad() { super.viewDidLoad() btnfirst = UIButton(type: .system) btnfirst.setTitle("Press", for: .normal) btnfirst.setTitleColor(.red, for: .normal) btnfirst.frame = CGRect(x: 100, y: 200, width: 100, height: 30) btnfirst.addTarget(self, action: #selector(benpress( sender:)),for: .touchUpInside) self.view.addSubview(btnfirst) } func benpress( sender :UIButton) { //Your Code Here }


button.addTarget(self, action:#selector(self.click), for: .touchUpInside) func click(sender : UIButton) { // code here }


button.addTarget(self, action: #selector(self.buttonTapped), for: .touchUpInside) func buttonTapped(sender : UIButton) { // code here }