gpt4 book ai didi

UIPickerView selectedRowInComponent : returns stale data after code adjusts it

转载 作者:行者123 更新时间:2023-12-04 12:56:31 25 4
gpt4 key购买 nike

我有一个 UIPickerView具有多个组件。有些值是灰色的,我的pickerView:didSelectRow:inComponent通过将有问题的选择器组件移动到最接近的有效值来兑现这一点,就像 UIDatePicker当您选择“二月”时,从“30”变为“28”。然后它调用一个委托(delegate)方法来宣布调整后的值。

当我的调节器方法调用我的 UIPickerViewselectRow:inComponent:animated:YES ,屏幕上的值是正确的,但是来自 selectedRowInComponent: 的值是陈旧的(从调整灰度值之前)。但是,如果我调用 selectRow:inComponent:animated:NO ,返回值是正确的,但缺少动画是不和谐的。

我尝试将调整包含在 beginAnimations: 中/commitAnimations阻止并捕获 UIView 中的值的+animationDidStopSelector ,但我仍然得到陈旧的值。有没有人遇到过这个?

这个问题很容易复制。

[picker selectRow:newValue inComponent:i+offset animated:YES];

retValue = [picker selectedRowInComponent:i+offset];

如果你有 YES 动画它,那么 retValue 就是 0 (你称之为陈旧)。更改为 NO,retValue 将与 newValue 相同。

最佳答案

我没有注意到这一点,但一个简单的技巧可能是执行动画操作,然后一旦动画完成,只需在没有动画的情况下再次执行。然后是 selectedRowInComponent 的结果应该是正确的。

但是,从您的测试代码看来,它返回了正确的结果。如果您要求选取器选择动画行,那么在动画完成之前不会设置新值,因此如果您在刚开始动画后立即询问所选行(无论如何直到下一个 runloop 才会开始),那么您将得到旧的结果。

无论如何,你到底是如何捕捉动画的结尾的,你能展示你使用的代码吗?

另一个问题是,为什么您需要立即正确?如果您明确设置选择器,那么您已经确切知道设置了什么值,那么为什么还要再问一次呢?

关于UIPickerView selectedRowInComponent : returns stale data after code adjusts it,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1107788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com