모든 사람들이 태그를 사용하는 것에 감사하지만 실제로는 UIButton 클래스를 확장하고 거기에 객체를 추가해야합니다.
태그는이 문제를 해결할 수있는 절망적 인 방법입니다. UIButton을 다음과 같이 확장합니다 (Swift 4에서).
import UIKit
class PassableUIButton: UIButton{
var params: Dictionary<String, Any>
override init(frame: CGRect) {
self.params = [:]
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder) {
self.params = [:]
super.init(coder: aDecoder)
}
}
그러면 호출이 호출 될 수 있습니다 (에서 콜론 ":"참고 Selector(("webButtonTouched:"))
).
let webButton = PassableUIButton(frame: CGRect(x:310, y:40, width:40, height:40))
webButton.setTitle("Visit",for: .normal)
webButton.addTarget(self, action: #selector(YourViewController.webButtonTouched(_:)), for:.touchUpInside)
webButton.params["myvalue"] = "bob"
그리고 마침내 여기에서 모두 잡으십시오.
@IBAction func webButtonTouched(_ sender: PassableUIButton) {
print(sender.params["myvalue"] ?? "")
}
이 작업을 한 번 수행하고 프로젝트 전체에서 사용합니다 (자식 클래스에 일반적인 "객체"를 만들고 원하는 것을 버튼에 넣을 수도 있습니다!). 또는 위의 예제를 사용하여 무한한 수의 키 / 문자열 매개 변수를 버튼에 넣습니다. URL, 확인 메시지 방법 등을 포함하는 데 정말 유용합니다.
제쳐두고, SO
커뮤니티가 인터넷 주위에 나쁜 습관의 전체 세대가 있다는 것을 깨닫는 것이 중요합니다. 개념object extensions