2016-11-04 18 views
0

私は初心者ですので、この時点では明白なことはありません。だから助けてください。 pauseButtonを押すとstartButtonが再び有効になり、その逆も必要です。私はUIButtonの両方の機能によってアクセスできるvarを作成することはできません。私は何をすべきか?ここに私のコードの一部です:開始ボタンと一時停止ボタンが有効/無効になります

@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

2つのボタン変数に対して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

しかし、 "プロパティ送信者にlet定数を代入できません"というエラーがあります。それを避けるために行うべきことは他にありますか? –

+0

@AntonPlatonovこのエラーはどこにありますか? –

+0

sender.isEnabled = falseの2つのアクションを持つ最初の解決策で@ –

関連する問題