버튼을 눌렀을 때 화면에서 벗어나기를 원하지만 코드 부분 (buttonPressed)이 작동하지 않습니다. buttonPressed 메서드가 클래스 안에 있으면 버튼을 눌렀을 때 아무 반응이 없습니다. 메서드를 괄호 외부로 이동하고 (viewDidLoad 바로 앞에) 코드가 실행됩니다. 그러나 튜토리얼 창과 반대되는 전체보기를 슬라이드합니다. Tutorial 클래스의 메서드로 buttonPressed 작업을 만들거나 클래스에서 호출 된 "뷰"의 특정 인스턴스를 참조하는 방법을 찾는 방법을 찾아야합니다.버튼을 신속하게 클래스에서 프로그래밍 방식으로 호출하려면 어떻게해야합니까?
나는 코딩에 익숙하지 않고 메소드에 새로운 것이므로 어떤 도움도 받으실 수 있습니다!
class Tutorial{
var label = UILabel()
var view = UIView()
var button = UIButton()
init (text: String){
view = UIView()
label = UILabel(frame: CGRect(x: 10, y: 10, width: 180, height: 90))
button = UIButton(frame: CGRect(x: 50, y: 110, width: 100, height: 30))
view.backgroundColor = .white
view.layer.cornerRadius = 15
view.translatesAutoresizingMaskIntoConstraints = false
label.textAlignment = .center
label.text = text
label.numberOfLines = 10
label.backgroundColor = .white
label.textColor = UIColor(red:0.12, green:0.15, blue:0.23, alpha:1.0)
button.backgroundColor = UIColor(red:0.23, green:0.72, blue:0.44, alpha:1.0)
button.setTitleColor(.white, for: .normal)
button.setTitle("Got it!", for: .normal)
button.layer.cornerRadius = 15
view.addSubview(label)
view.addSubview(button)
button.addTarget(self, action: #selector(buttonPressed), for: UIControlEvents.touchUpInside)
}
func setConstraints(height: CGFloat){
view.centerXAnchor.constraint(equalTo: view.superview!.centerXAnchor).isActive = true
view.topAnchor.constraint(equalTo: view.superview!.topAnchor, constant: UIScreen.main.bounds.height-300).isActive = true
view.widthAnchor.constraint(equalToConstant: 200).isActive = true
view.heightAnchor.constraint(equalToConstant: height).isActive = true
UIView.animate(withDuration: 0.5, delay: 0.2, options: [], animations: {
self.view.center.x -= UIScreen.main.bounds.width
})
}
@objc func buttonPressed(){
print("Pressed")
UIView.animate(withDuration: 0.5, delay: 0.0, options: [], animations: {
self.view.center.x -= UIScreen.main.bounds.width
},
completion: { (finished: Bool) in
self.view.isHidden = true
})
}
}
override func viewDidLoad() {
super.viewDidLoad()
let tutorial1 = Tutorial(text: "Click and hold to see the anatomy overlay")
self.view.addSubview(tutorial1.view)
tutorial1.setConstraints(height: 150)
IB에서 함수 및 프로그래밍 작업을 수행하는 방법을 알고 있지만 여러 자습서를 추가하고이를 프로그래밍 방식으로 수행하는 것을 선호합니다. – Nate