2017-03-01 94 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根本不跳。

这很奇怪,我找不到这两个元素之间的任何关联。

预先感谢您的任何答复:)

+0

标签文本在跳回之前是否正确设置或每次都变为0? –

+0

是的文本得到正确设置,然后UIPicker跳回 –

+0

如果不是设置标签文本,而只是打印字符串(行)?它仍然跳?我从来没有见过这个,也没有答案,所以我试图帮助你调试 –

回答

0

事实证明,这种“怪神奇虫”,是由于这样的事实,我在viewDidLayoutSubviews设置UIPickerViews的默认值()由于另一个bug。

因此,每当元素发生变化时,都会调用viewDidLayoutSubviews(),并重新设置UIPickerView的值,导致它跳转。