2017-07-28 6 views
0

私は2つのラジオボタンを持っていますが、それぞれにそれ自身のIBActionがあります。最初は完璧に実行されます。 2番目はif-else条件を持ち、最初のタップに応答しませんが、その後は各タップに応答します。同様の質問を見ると、最初のタップはアクションを実行する前に機能を評価しているに過ぎませんが、最初のタップでボタンを反応させる方法はわかりません。スウィフト3のボタン操作を2度押さなければならない

@IBAction func radioSchedule(_ sender: Any) { 
     print(timePicker.isHidden) 

     if timePicker.isHidden == true { 

      timePicker.isHidden = false 
      hideButton.isHidden = true 
      timeView.isHidden = false 
      itemTypeField.text = "Schedule" 
      saveButton.isHidden = false 

     } else { 
      timePicker.isHidden = true 
      timeView.isHidden = true 
     } 
     } 
+3

あなたが最初のタップに ''プリント(timePicker.isHidden)からデバッグコンソールでの任意の出力を見ていますか? – DonMag

+0

はい、ありがとうございます。ピッカーは表示されませんが、コンソールにはfalseと表示されます。ピッカーが表示されたら、2回目のタップでtrueになります。 –

+0

@JWHall ^そう、面白いです。それを評価しよう。ボタンが正常に動作しているようです...どこで/最初に 'timePicker'を隠しとして設定していますか? –

答えて

0

は最初は隠されているが、あなたのtimePickerではありませんそれがあなたの問題の原因となっています。

もしあなたがのif/elseを判断して解決したら、timePickerを非表示にするか心配する必要はありません。

はすなわち:

@IBAction func radioSchedule(_ sender: Any) { 

     print(timeView.isHidden) 

     if timeView.isHidden { 

      hideButton.isHidden = true 
      timeView.isHidden = false 
      itemTypeField.text = "Schedule" 
      saveButton.isHidden = false 

     } else { 
      timeView.isHidden = true 
     } 
    } 
+0

Thanks William!これで修正されました。同じブロックで2つのことをしようとしていた、私が別のものの中にあることをしようとしていた、あるいは完全に他の何かをしようとしていたという私の論理に問題がありましたか? –

+0

いいえ、あなたの問題は、 'timePicker'が隠されているかどうかを判断しようとしていましたが、' timePicker'は元々隠されていませんでした...それが置かれているビューだけが隠されていました - 'timeView' –

0

timepicker.ishiddenを設定するように見えますが、問題はあなたのコードを修正し、このようなもの作成されています - 私の推測では、あなたのtimePickerがあなたのtimeViewtimeViewの内側に座っている

@IBAction func radioSchedule(_ sender: Any) { 
    print(timePicker.isHidden) 
    //Here updating the isHidden property first. If its false then initially will set to true. 
    timePicker.isHidden = !timePicker.isHidden 
    if timePicker.isHidden == true { 
    hideButton.isHidden = true 
    timeView.isHidden = false 
    itemTypeField.text = "Schedule" 
    saveButton.isHidden = false 
    } else { 
     timeView.isHidden = true 
     } 
    } 
+0

ここでtimePickerがポップアップします。しかし、else条件は決して発動しないので、2番目のプレスでそれを隠すことはできません。 –

+0

これは単なるホットフィックスです。あなたは 'timepicker.isHidden'が最初にfalseを印刷している理由を調べる必要があります。すでに隠されていると思われるとき –

+0

だから私はelseブロックを更新しました –

関連する問題