2017-11-26 4 views
-1

Ich möchte die Schaltfläche aus dem Bildschirm gleiten, wenn es getroffen wird, aber dieser Teil des Codes (buttonPressed) funktioniert nicht. Wenn die Methode buttonPressed innerhalb der Klasse ist, passiert nichts, wenn die Schaltfläche gedrückt wird. Verschieben Sie die Methode außerhalb der Klammern (nach rechts vor viewDidLoad) und der Code wird ausgeführt. Es verschiebt dann jedoch die gesamte Ansicht im Gegensatz zu nur das Tutorial-Fenster. Ich muss entweder einen Weg finden, um buttonPressed-Arbeit als eine Methode der Tutorial-Klasse zu machen, oder ich finde einen Weg, ihn auf die spezifische Instanz von "view" verweisen zu lassen, die in der Klasse aufgerufen wird.Wie eine Schaltfläche eine Methode in einer Klasse in swift programmgesteuert aufrufen?

Ich bin neu in der Programmierung und sehr neu zu Methoden, so dass jede Hilfe geschätzt wird!

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) 

Antwort

Verwandte Themen