#selector의 함수에서 매개변수를 사용할 수 없는 이유

7961 단어 uikittech
화면의 중심에 단추를 놓고 이 단추를 연결하는 클릭 함수
매개변수 사용하기
하지만 실제로 그 버튼을 누르면number 5 인쇄되지 않음number 4527816368 인쇄
class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        let button = UIButton(type: .system)
        button.setTitle("Click me", for: .normal)
        button.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside)
        button.translatesAutoresizingMaskIntoConstraints = false
        view.addSubview(button)
        
        button.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
        button.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
    }

    @objc func buttonTapped(number: Int = 5) {
        print("number", number) // number 4527816368
    }

}

addTarget()의 첫 번째 매개변수

func buttonTapped() 다음과 같이 수정하여 매개 변수를 더욱 상세하게 이해하도록 하겠습니다.
@objc func buttonTapped(first: Any) {
	print("first", first)
}
버튼을 클릭합니다.

이런 물건이 프린트되었다UIButton 자체가 인쇄된 것 같아요.
문장 첫머리의 4527816368, 되돌아오는 UIButtonInt로 변환됨<UIButton>4527816368이런 숫자가 되돌아왔어요.

addTarget()의 두 번째 매개변수


다시 한 번 해 보고 두 번째 매개 변수를 더해라
@objc func buttonTapped(first: Any, second: Any) {
	print("second", second)
}

이번에는 터치스크린 사건도 있었던 것 같아요.

총결산

addTarget()에서 사용#selector()자기 파라미터가 제한된 것 같아요.
  • 첫 번째 파라미터는UIButton
  • 두 번째 파라미터는UIEvent
  • 상기 사실에 근거하여 코드의 가독성을 높이려 하다
    @objc func buttonTapped(button: UIButton, event: UIEvent) {
    	print(button)
    	print(event)
    }
    

    결론


    상황에 따라
    최소 addTarget()#selector() 시간 매개 변수 사용 불가

    좋은 웹페이지 즐겨찾기