【问题标题】:UIPickerView JitterUIPickerView 抖动
【发布时间】:2017-03-01 22:59:57
【问题描述】:

我有一个 UIPickerView 和一个 UILabel,彼此分开。

当用户在 UIPickerView 中选择一行时,我使用委托函数更改 UILabel 文本:

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

但由于某种原因,更改标签的文本会导致 UIPickerView 跳回顶部(第一行)。

当我删除“label.text = String(row);”行时UIPickerView 根本不跳转。

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

提前感谢您的任何回复:)

【问题讨论】:

  • 标签文本在跳回前是否设置正确还是每次都变为0?
  • 是的,文本设置正确,然后 UIPicker 跳回
  • 如果不设置标签文本,只打印字符串(行)怎么办?还会跳吗?我从来没有见过这个,也没有答案,所以我试图帮助你调试
  • 哈哈我也不是很奇怪。打印字符串而不是设置文本有效(无跳转),我尝试注释掉不同的部分,并且仅在设置此标签的文本时才会发生。
  • 如果我总是将文本设置为“0”,它会跳转一次,然后再正常工作。

标签: swift uipickerview uipickerviewdelegate


【解决方案1】:

原来这个“奇怪的魔法错误”是由于我在 viewDidLayoutSubviews() 中设置了 UIPickerViews 的默认值,因为另一个错误。

因此,每当元素发生变化时,都会调用 viewDidLayoutSubviews() 并再次设置 UIPickerView 的值,从而导致其跳转。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多