Swift3: button Agregar con código

Estoy leyendo la documentation rápida de Apple (iOS), pero está escrita para Swift 2 y uso Swift 3. Quiero agregar un button mediante progtwigción, pero parece que hay un cambio y no puedo encontrar cómo solucionarlo.

Aquí está el ejemplo del Código para el Swift 2:

import UIKit class RatingControl: UIView { // MARK: Initialization requinetworking init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) // Buttons let button = UIButton(frame: CGRect(x: 0, y: 0, width: 44, height: 44)) button.backgroundColor = UIColor.networking() button.addTarget(self, action: #selector(RatingControl.ratingButtonTapped(_:)), forControlEvents: .TouchDown) addSubview(button) } override func intrinsicContentSize() -> CGSize { return CGSize(width: 240, height: 44) } // MARK: Button Action func ratingButtonTapped(button: UIButton){ print("Button pressed") } } 

El único cambio que realicé después de que el 'fix-it' mostró el error es esto en el selector:

 button.addTarget(self, action: #selector(RatingControl.ratingButtonTapped(button:)), for: .touchDown) 

Esto debería haber impreso "Botón presionado", pero no es así. ¿Alguna ayuda?

Mi código:

 button.backgroundColor = UIColor.networking button.addTarget(self, action: #selector(RatingControl.ratingButtonTapped(_:)), for: .touchDown) override var intrinsicContentSize : CGSize { //override func intrinsicContentSize() -> CGSize { //... return CGSize(width: 240, height: 44) } // MARK: Button Action func ratingButtonTapped(_ button: UIButton) { print("Button pressed 👍") } 

Prueba algo como esto. No he probado pero debería funcionar:

 let button = UIButton(frame: CGRect(x: 0, y: 0, width: 44, height: 44)) button.backgroundColor = UIColor.networking button.addTarget(self, action: #selector(ratingButtonTapped), for: .touchUpInside) addSubview(button) func ratingButtonTapped() { print("Button pressed") } 

Encontré la solución. Por alguna razón:

 func ratingButtonTapped(button: UIButton) 

necesita un button "_" antes. Entonces debería ser:

 func ratingButtonTapped(_ button: UIButton) 

Y la otra parte del código debe ser:

 button.addTarget(self, action: #selector(RatingControl.ratingButtonTapped(_:)), for: .touchDown) 

Gracias por ayudar 🙂 Su método puede ser correcto también, pero eso es lo que Apple quiere.