사용자 지정 경고를 만들려고했는데 단추에 대한 완료 처리기를 구현하려고 미쳤습니다. 나는 몇 가지, 마지막으로 UIButton의 selector addTarget 함수를 전달하기 위해 func 배열을 만들지 만 작동하지는 않았다.버튼을 사용하여 경고를 만드는 사용자 정의 클래스입니다. 완료 처리기를 추가하는 방법?
문제 (여기서 ******이다없는) :
는내가 할 수없는 어려운 코딩 부분이다 "#selector의 인수는 더는 방법, 재산 또는 초기화를 @obc 참조 않습니다" 내가 아래 클래스와 함께 개체를 만드는 내보기 컨트롤러에서받은 몇 가지 코드로 선택기를 구성하십시오.
class Alert: NSObject {
func showAlert(){
if let window = UIApplication.shared.keyWindow {
//configure some constraints and animations
}
var buttons: [UIButton] = []
var buttonsFunc: [() -> Void ] = []
func addNewButton(title: String, handler: @escaping() -> Void) {
buttons.append(createButton(title: title))
buttonsFunc.append {
self.dismissAlert()
handler()
}
}
func setupButtons() {
for (index, button) in buttons.enumerated() {
boxView.addSubview(button)
//Here is the problem ***************************
button.addTarget(self, action: #selector(buttonsFunc[index]), for: .touchUpInside)
//More constraints(not important)
button.centerXAnchor.constraint(equalTo: boxView.centerXAnchor).isActive = true
button.widthAnchor.constraint(equalTo: (button.titleLabel?.widthAnchor)!).isActive = true
button.heightAnchor.constraint(equalToConstant: 25).isActive = true
}
}
func dismissAlert(){
//Animation to dismiss my alert
}
다른 기능 :
//Even if its not important the function i use to create the button
func createButton(title: String) -> UIButton {
let button = UIButton(type: .system)
button.backgroundColor = .clear
button.setTitle(title, for: .normal)
button.titleLabel?.sizeToFit()
button.setTitleColor(uPBlue, for: .normal)
button.titleLabel?.font = UIFont(name: uPFont, size: 20)
button.translatesAutoresizingMaskIntoConstraints = false
return button
}
모든 아이디어를 어떻게이 문제를 해결하기 위해? 아니면 완전히 다른 방법 일 수 있습니다. 그것이 작동한다면 나는 그것을 가져 가라.
같은 버튼을 사용하고 여러 번을 구현할 수 있습니다 제목? 왜 버튼 배열을 가지고 있습니까? – luke