ボタンがヒットしたときにボタンをスライドさせたいのですが、コードの一部(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)
私はIBで関数とプログラミングの作業を行う方法を知っていますが、私は複数のチュートリアルを追加し、プログラムでそれを行うことをお勧めします。 – Nate