2016-11-04 71 views
0

我是一個初學者,所以我可能在這一點上看不到明顯的東西。所以,請幫助。當按下pauseButton時,我需要再次啓用startButton,反之亦然。我不能創建一個可以被UIButton函數訪問的var。我該怎麼辦?這裏是我的代碼部分:開始和暫停按鈕啓用/禁用swift

@IBAction func Start(_ sender: AnyObject) { 

    let disableMyStartButton = sender as? UIButton 
    disableMyStartButton?.isEnabled = false 

    timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(ViewController.update), userInfo: nil, repeats: true) 
} 


@IBAction func pauseTimer(_ sender: AnyObject) { 

    timer.invalidate() 

    WarningLabel.text = "Paused" 
} 
+0

你的意思是說,你不能把IBOutlet作爲兩個按鈕變量嗎?爲什麼? – Janmenjaya

+0

是否要在啓用或禁用時停止觸摸用戶交互或更改圖像? – KKRocks

回答

0

您需要創建buttonsOutlet和你的方法中使用它們。

@IBOutlet var btnStart: UIButton! 
@IBOutlet var btnPause: UIButton! 

@IBAction func start(_ sender: UIButton) { 

    sender.isEnabled = false 
    btnPause.isEnabled = true 
    timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(ViewController.update), userInfo: nil, repeats: true) 
} 

@IBAction func pauseTimer(_ sender: UIButton) { 

    sender.isEnabled = false 
    btnStart.isEnabled = true 
    timer.invalidate() 
    WarningLabel.text = "Paused" 
} 

你也可以使用這種按鈕的單一動作做到這一點。

@IBAction func onStartOrPause(_ sender: UIButton) { 

    if (sender == btnStart) { 
     sender.isEnabled = false 
     btnPause.isEnabled = true 
     timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(ViewController.update), userInfo: nil, repeats: true) 
    } 
    else { 
     sender.isEnabled = false 
     btnStart.isEnabled = true 
     timer.invalidate() 
     WarningLabel.text = "Paused" 
    } 
} 

注:您還可以通過在行動改變它的標題或圖像使用單個按鈕做出同樣的事情。

+0

謝謝。但是,有「不能分配給屬性發送者一個讓常量」錯誤。還有什麼應該做的,以避免它? –

+0

@AntonPlatonov你在哪裏得到這個錯誤? –

+0

在第一個解決方案中有兩個動作在行sender.isEnabled = false –