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)
Ich weiß, wie man die Funktion und Programmierung in IB macht, aber ich werde mehrere Tutorials hinzufügen und würde es vorziehen, es programmgesteuert zu machen. – Nate