2016-04-26 3 views
-3

Ich versuche Play/Pause und Stop-Buttons in einer Symbolleiste für eine einfache Stoppuhr-App zu implementieren. Siehe Code unter http://swiftstub.com/722226472 Ich habe seltsames Verhalten: zuerst macht der Play-Button nichts. Wenn ich auf die Stopp-Schaltfläche klicke, verschwindet das Symbol und die Wiedergabe/Pause schaltet um und funktioniert korrekt. Vorschläge? Ich verwende die neueste schnelle und XcodeEin anderes, aber spezifisches Play/Pause-Problem

+0

Sie können Ihren Code mit den anderen vergleichen, die auf Blogs wie Ray veröffentlicht wurden, anstatt hier zu fragen. –

+1

Bitte verlinken Sie nicht nach draußen - diese Seiten neigen dazu wegzugehen - setzen Sie den entsprechenden Code in die Frage. –

Antwort

0

Ziel sollte selbst (nicht null) in diesen beiden Linien:

var playButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Play, target: nil, action: Selector("playButtonPressed")) 

var pauseButton = UIBarButtonItem(barButtonSystemItem: 
    UIBarButtonSystemItem.Pause, target: nil, action: Selector("pauseButtonPressed")) 

EDIT (basierend auf Kommentar): und Sie sollten diese Zeilen in eine init bewegen() weil Sie nicht initialisieren können, indem Sie self in einer var verwenden, die auf diese Weise initialisiert wird.

var playButton: UIBarButtonItem! 
var pauseButton: UIBarButtonItem! 

required init?(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder) 
    playButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Play, target: self, action: Selector("playButtonPressed")) 
    pauseButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Pause, target: self, action: Selector("pauseButtonPressed")) 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    let toolBarItems = [playButton] 
    toolbar.setItems(toolBarItems, animated: false) 
} 

Da Sie nie diese in hinzugefügt zu beginnen, ich vermute, dass Sie nur eine andere Taste in Ihrem Storyboard haben, die etwas nicht angeschlossen ist. Dann ersetzen Sie sie beim ersten Anruf, um zu stoppen.

+0

Ich habe nur zwei Elemente der Leiste: Play und Stop. Wenn ich nil zu self im Ziel ersetze, bekomme ich: (!) 'Kann Wert vom Typ 'NSObject ->() -> ViewController' nicht in den erwarteten Argumenttyp 'AnyObject' konvertieren? '' –

+0

Ich habe mehr Info hinzugefügt - verschiebe die Var Initialisierung zu einem init(), so dass Sie auf self zugreifen können. –

+0

Danke, Lou. Ich habe versucht, sie in eine init() zu verschieben, konnte aber nicht richtig herausfinden, wie das geht. - Tut mir leid, ich bin nur am Tag 3, Swift zu lernen. –

Verwandte Themen