我正在处理和奇怪的错误,我创建了一个由uibuttons组成的自定义分段控件(控制器本身是UIView的一个子类,我更改了选定和正常控件状态的按钮图像以指示选择按钮图像变化缓慢
在我在IB的父视图中,我已经将视图的标识设置为我的自定义类。问题是我有一个tableView,当我滚动它时,滚动动画中我的自定义视图中的按钮不会改变它的图像立即,而不是它等待表完成滚动,然后它更新。任何想法?
我正在处理和奇怪的错误,我创建了一个由uibuttons组成的自定义分段控件(控制器本身是UIView的一个子类,我更改了选定和正常控件状态的按钮图像以指示选择按钮图像变化缓慢
在我在IB的父视图中,我已经将视图的标识设置为我的自定义类。问题是我有一个tableView,当我滚动它时,滚动动画中我的自定义视图中的按钮不会改变它的图像立即,而不是它等待表完成滚动,然后它更新。任何想法?
你没有给很多的细节,但它听起来就好像你想在当前运行循环中做太多工作一样。如果是这样,那么答案将是相关的:
iOS会等待您的代码在执行任何显示更新之前完成执行。因此,任何更新实际上都会排队,直到您的当前代码块完成。为了解决这个问题,最常见的技巧是允许当前的运行循环结束并在很短的延迟后再次执行拾取。
因此,在你的情况下,调用代码来更新你的自定义段控件。然后,而不是调用的代码更新您的表格,将车停在另一种方法的代码,并呼吁使用[self performSelector: @selector(delayedUpdate) withObject: nil afterDelay:0.1];
为了说明您会如何更改代码的方法:
前
[self updateSegmentController];
[self updateTableScrollPosition];
return;
AFTER
[self updateSegmentController];
[self performSelector: @selector(updateTableScrollPosition) withObject: nil afterDelay: 0.1];
return;
通常延迟0.0工作得很好;在调用指定方法之前,仍然可以达到让当前运行循环完成并显示更新的效果。有时增加额外的延迟可以改善您的动画外观。
嗨,Matt谢谢你的回复。不幸的是,我没有运气,我没有对表格做任何事情,只使用静态数据,只要表格滚动,延迟就会持续。只要滚动动画结束,就可以。还有什么建议? –
通过点击接受打勾来接受人们在之前的问题中给出的一些答案。这就是现在没人回答的原因。 – Evernoob
好的,完成了。谢谢。 –
请问一些代码? –