1
我有一個ButtonProvider
類,它創建我的按鈕並添加目標操作。但是,按下按鈕時,它不會調用創建它的類ButtonProvider
中的函數,而是調用另一個類中具有相同名稱的函數。UIButton從錯誤的類調用函數
class ButtonProvider {
let view: UIView!
let button: UIButton!
init(view: UIView) {
self.view = view
}
func showButton() {
button = UIButton(frame: CGRect(x: 0, y: 0, width: 50, height: 50))
button.backgroundColor = .white
button.addTarget(self, action: #selector(ButtonProvider.close), for: .touchUpInside)
view.addSubview(button)
}
@objc func close() {
button.removeFromSuperview()
}
}
在我的呼喚ViewController
:
override func viewDidLoad() {
let buttonProvider = ButtonProvider(view: self.view)
buttonProvider.showButton()
}
@objc func close() {
//This is the function that is called
}
任何想法,爲什麼ButtonProvider.close的選擇叫我ViewController.close功能?
那麼'buttonProvider'不會被保留,因此它會被釋放。我很驚訝應用程序不會崩潰。 – Sulthan
爲什麼使用#selector(ButtonProvider.close)而不是#selector(close)? –
@DmytroShvecov這是一樣的。 – Sulthan