2016-04-26 76 views
-3

我試圖實現播放/暫停和停止按鈕在簡單的秒錶應用程序的工具欄中。在http://swiftstub.com/722226472查看代碼我遇到了一些奇怪的行爲:首先播放按鈕什麼也不做。如果我點擊停止按鈕,圖標消失,然後播放/暫停切換並正常工作。建議?我使用的是最新的迅速和Xcode的另一個,但具體的播放/暫停問題

+0

您可以將您的代碼與其他發佈在諸如Ray之類的博客上的代碼進行比較,而不是在此處詢問。 –

+1

請不要將外部鏈接到代碼 - 這些網站往往會消失 - 將相關代碼放在問題中。 –

回答

0

的目標應該是在這兩個系的自我(不爲零):

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

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

EDIT(基於評論):你應該這些線移動到一個init (),因爲你不能在這個初始化的var中使用self進行初始化。

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) 
} 

因爲你從來沒有在添加了這些,首先,我懷疑你只是在你的故事板未掛接到任何其他按鈕。然後在第一次呼叫時將其替換爲停止。

+0

我只有兩個欄按鈕項目:播放和停止。如果我在目標中將nil替換爲self,我會得到:(!)'無法將類型'NSObject - >() - > ViewController'的值轉換爲期望的參數類型'AnyObject?' –

+0

我添加了更多信息 - 將var初始化到init(),以便您可以訪問self。 –

+0

謝謝,Lou。我試圖將它們移動到init()中,但無法弄清楚如何正確執行。 - 對不起,我只在第三天學Swift。 –