2017-01-06 5 views
0

ヨーロッパの国々について簡単なクイズアプリを作っています。マップと3つのボタンの下に国名が表示されていますが、そのうちの1つは間違いありません。私は間違った(ユーザーが間違ったボタンをクリックすると)ボタンをハイライトし、緑色に修正したい、ユーザーが正しいボタンをクリックすると緑色に強調表示され、5秒後には最初と同じ色に戻る。私はボタンの色を変更する方法を知っていますが、私は5秒間それを行い、デフォルトの色に戻ってくるのを知らない。どうやってやるの ?そのコードの下には、私はボタンの色Swiftの正解と間違いの回答

UIButtonOutlet.Backgroundcolor.Uicolor.green 

しかし、そのデフォルトの緑を変更するために使用するので、私は自分の色を設定することができません。

+0

不正確な回答についても同じことが必要ですか? –

+0

間違っている私は赤い間違ったボタンを強調したい、5sの緑が正しいことを強調したい –

答えて

0

このようなことを試すことができます。最初にあなたのクラスのUIButtonインスタンスを宣言し、次にscheduledTimerのボタンをbackgroundColorにセットして正しいものと正しくないものを設定し、そのボタンリファレンスを最初に作成したボタンで保存します。あなたはボタンのbackgroundcolorを設定しているとき

var selectedButton = UIButton() 

今、このselectedButtonを使用しています。何この本質的

var correctButton: UIButton 

func changeColor() { 
    if correctButton.backgroundColor == .green { 
     correctButton.backgroundColor = .lightGray //back to original color 
    } 
} 

btnOutlet.backgroundcolor = .green //For correct 
btnOutlet.backgroundcolor = .red //For incorrect 
self.selectedButton = btnOutlet 
//Now scheduled the timer for 5.0 sec 
Timer.scheduledTimer(timeInterval: 5.0, target: self, selector: #selector(setButtonBGBack), userInfo: nil, repeats: false) 

func setButtonBGBack() { 
    self.selectedButton.backgroundcolor = .blue //Set to default here 
    self.selectedButton = UIButton() 
} 
+0

基本的に同じアイデアを持っているように見える –

+0

ありがとう:)しかし、色でこのサークルから自分のボタンの色を選ぶとそれは私がこれを設定することができますか? –

+0

ようこそメイト:)あなたは何を意味するのですか**私はこのサークルの色から私のボタンの色を選ぶと(私はどのように私が英語を言うのか分からない:))どうして私はこれを設定できますか?** –

0

は "changeColor" FUNCにある色を変更するためにあなたのコードを考えてみましょう、あなたのクラスでsetButtonBGBackメソッドを追加します。 doesは、funcが呼び出されたときに緑色であれば、正しいボタンの色をデフォルトに戻します。あなたは正しい答えであるボタンをクリックすると、このコードではそう

@IBAction func buttonClicked(sender: UIButton) { 
    if sender.titleLabel?.text == "Correct Answer" { 
     button.backgroundColor = .green 

     correctButton = button //set the correct button variable so the changeColor func can be used 
     let timer = Timer.init(timeInterval: 5, target: self, selector: #selector(changeColor), userInfo: nil, repeats: false) 
    } else if sender.titleLabel?.text == "False Answer 1" || sender.titleLabel?.text == "False Answer 2" { 
     button.backgroundColor = .red 
    } 

} 

は今、これを使用するために、我々はあなたのボタンのそれぞれに接続されてIBActionの内側に少し作業を行うことができます(あなたはこれをタグなどの方法で識別できますが、テキストを使用することにしました)、次に色が緑色に設定され、次にcorrectButton変数が設定されますが、タイマーが開始され、5秒後にchangeColor funcを編集し、元の色に戻します。

希望はこのことができます:)

編集:もちろん

、私の方法は、あなたがこれらのボタンを作成するために、ストーリーボードを使用していることを前提としています。プログラムでそれらを作成する場合は、NiravDのメソッドがうまく機能します。

+0

あなたが追加できる唯一のセレクタである' Timer'では間違いがありますメソッドは 'changeColor()'と 'changeColor(timer:Timer)'です。 'Timer'セレクターで' UIButton'インスタンスを渡すことはできません。 –

+0

@NiravDああ、私はそれを見落とした。それを指摘してくれてありがとう。少し違う方法でコードを更新します。 –