2017-11-26 15 views
-1

버튼을 눌렀을 때 화면에서 벗어나기를 원하지만 코드 부분 (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) 

답변