2017-11-26 3 views
-1

ボタンがヒットしたときにボタンをスライドさせたいのですが、コードの一部(buttonPressed)が機能していません。メソッドbuttonPressedがクラス内にある場合、ボタンが押されても何も起こりません。メソッドを括弧の外側に移動し(viewDidLoadの直前)、コードが実行されます。ただし、チュートリアルウィンドウだけではなく、ビュー全体をスライドします。私は、TutorialクラスのメソッドとしてbuttonPressedを動作させる方法を見つけ出すか、クラスで呼び出された "view"の特定のインスタンスを参照する方法を見つける必要があります。どのようにしてボタンをプログラム内でクラス内で迅速に呼び出すことができますか?

私はコーディングが新しく、メソッドには非常に新しいので、助けてください!

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) 

答えて

0

Interface Builder定数を使用してみてください。ここにAppleのドキュメントがあります。 https://developer.apple.com/documentation/appkit/constants/interface_builder_constants?language=objc ボタンのIBOutletとIBActionを作成します。

+0

私はIBで関数とプログラミングの作業を行う方法を知っていますが、私は複数のチュートリアルを追加し、プログラムでそれを行うことをお勧めします。 – Nate

関連する問題