2017-03-01 25 views
1

私はUIPickerViewとUILabelをお互いに持っています。UIPickerViewジッタ

ユーザーはUIPickerViewで行を選択した場合、私は、デリゲート関数を使用して、UILabelのテキストを変更します。何らかの理由でしかし

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) 
{ 
    label.text = String(row); 
} 

ラベルのテキストを変更するには、UIPickerViewが最初(トップに戻るジャンプする原因となります行)。

「label.text = String(row);」行を削除すると、 UIPickerViewはまったくジャンプしません。

これは非常に奇妙で、2つの要素の間に相関関係は見つかりません。

は、任意の応答を事前にいただきありがとうございます:)

+0

ラベルテキストは、ジャンプする前に正しく設定されていますか、毎回0になりますか? –

+0

はいテキストが正しく設定された後、UIPickerが戻ってきます –

+0

ラベルテキストを設定するのではなく、文字列(行)を印刷するだけですか?それはまだジャンプするのですか?私はこれを見たことがないし、答えを持っていないので、私はあなたがデバッグするのを手伝っているよ –

答えて

0

はこの「奇妙な魔法のバグは」原因私は原因別のバグに()viewDidLayoutSubviewsにUIPickerViewsのデフォルト値を設定しているという事実にあったことが判明します。

したがって、要素が変更されるたびに、viewDidLayoutSubviews()が呼び出され、UIPickerViewの値が再び設定され、ジャンプするようになりました。