Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 按钮图像变化缓慢_Iphone_Ios_Uibutton - Fatal编程技术网

Iphone 按钮图像变化缓慢

Iphone 按钮图像变化缓慢,iphone,ios,uibutton,Iphone,Ios,Uibutton,我正在处理一个奇怪的bug,我创建了一个自定义分段控件,该控件由uibuttons组成(控制器本身是UIView的一个子类。我将按钮的图像更改为选中和正常控件状态,以指示选中 在IB中的父视图中,我已将视图的标识设置为自定义类。问题是我有一个tableView,当我滚动它和滚动动画时,自定义视图中的按钮不会立即更改其图像,而是等待表完成滚动,然后更新。有什么想法吗?你没有给出太多的提示尾部,但听起来好像你试图在当前运行循环中做太多的工作。如果是这样,那么答案将是相关的: iOS会等到您的代码执行

我正在处理一个奇怪的bug,我创建了一个自定义分段控件,该控件由uibuttons组成(控制器本身是UIView的一个子类。我将按钮的图像更改为选中和正常控件状态,以指示选中


在IB中的父视图中,我已将视图的标识设置为自定义类。问题是我有一个tableView,当我滚动它和滚动动画时,自定义视图中的按钮不会立即更改其图像,而是等待表完成滚动,然后更新。有什么想法吗?

你没有给出太多的提示尾部,但听起来好像你试图在当前运行循环中做太多的工作。如果是这样,那么答案将是相关的:

iOS会等到您的代码执行完毕后再进行任何显示更新。因此,任何更新实际上都会排队等待,直到您当前的代码块完成。为了避免这种情况,最常见的技巧是允许当前运行循环结束,并在很短的延迟后重新开始执行

因此,在您的情况下,调用该代码来更新自定义段控件。然后,不要调用该代码来更新表,而是将该代码停在另一个方法中,并使用
[self-performSelector:@selector(delayedUpdate)withObject:nil afterDelay:0.1];

要说明如何更改代码,请执行以下操作:

以前

 [self updateSegmentController];
 [self updateTableScrollPosition];
 return;
之后


通常,0.0的延迟效果很好;它仍然可以实现在调用指定方法之前让当前运行循环完成和显示更新的效果。有时,添加额外的延迟可以改善动画外观。

通过单击“接受”勾选,接受人们对您先前问题给出的一些答案。这就是现在没有人回答的原因。嗨,马特,谢谢你的回答。不幸的是,我运气不好,我没有对表做任何事情,我只使用静态数据,延迟会持续到表滚动为止。滚动动画一完成就可以了。还有什么建议吗?
 [self updateSegmentController];
 [self performSelector: @selector(updateTableScrollPosition) withObject: nil afterDelay: 0.1];
 return;