UITableViewCell 内的 UISlider 更新
我有一个自定义 UITableViewCell,其中包含一个 UISlider 控件和一个显示滑块位置的当前文本值的 UILabel。 我想在拖动滑块旋钮时更新标签。 以下是基本要素。
cellForRowAtIndexPath: 该例程获取数据并更新滑块值和与其关联的标签。
滑块值更改: 该例程读取滑块值并更新数据。 然后它调用 [table reloadData] 以便更新标签。
问题: 不知何故,reloadData 中断了更新流。 如果我用 NSLog 代替 reloadData,我会得到一个很好的更新流,显示滑块的值。 为了防止循环,我进行了测试,以不设置滑块值或调用 reloadData,除非值不同。 那并没有解决问题。
任何帮助将不胜感激!
I have a custom UITableViewCell that contains a UISlider
control and a UILabel which shows the current text value for the slider position. I want to update the label as the slider knob is dragged. Here are the basic elements.
cellForRowAtIndexPath:
This routine takes data and updates the slider value and the label associated with it.
sliderValueChanged:
This routine reads the slider value updates the data.
It then calls [table reloadData] so the label gets updated.
Problem:
Somehow the reloadData is interrupting the flow of updates. If I substitute NSLog instead of reloadData I get a nice stream of updates showing the value of the slider. In an attempt to prevent looping I put in tests to not set the slider value or call reloadData unless the value was different. That didn't fix things.
Any help would be greatly appreciated!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
该问题是由 [table reloadData] 引起的,它似乎正在创建一个新的 Cell 对象,因此更新相同的滑块不起作用。 正确的实现是获取 sliderValueChanged 例程中引用的单元格并从那里设置标签。 为滑块设置一个标签来指示行,然后调用该方法以获取具有索引路径的单元格。
The problem is being caused by the [table reloadData] which appears to be creating a new Cell object so updates the same slider aren't working. The correct implementation was to get the referenced cell inside the sliderValueChanged routine and set the label from there. Set a tag to the slider to indicate the row and then call the method to get the cell with the index path.
这样的事就发生在我身上。 转到构建设置并查找标记为“启用浮点库调用”的编译器。 确保它已被禁用。 看看这是否对你有帮助。
Stuff like this happened to me. Go to build settings and look for a compiler flagged called "Enable floating point library calls". Make sure it's disabled. See if that helps you.