我的工作片段如下:
for (UIButton *b in buttonMapping) {
[b setTitle:@"yo!" forState:UIControlStateNormal];
[NSThread sleepForTimeInterval:1.0];
}
有四个按钮,所有四个按钮都会更新。但是,不是每秒更新一次,而是四秒钟。他们都更新了。
如何强制UIButton更新?或者这不是推荐的睡眠方法吗?
答案 0 :(得分:5)
[b setNeedsDisplay];
我也不建议睡觉主线程(就像你在这里做的那样),因为这会禁用所有用户交互。
有几种选择。一种可能是使用NSTimer
每秒执行一次特定方法。但是,更简单的方法是执行以下操作:
for (NSUInteger idx = 0; idx < [buttonMapping count]; idx++) {
UIButton * b = [buttonMapping objectAtIndex:idx];
[b performSelector:@selector(setNormalStateTitle:) withObject:@"yo!" afterDelay:(idx*60)];
}
然后将一个方法添加到名为setNormalStateTitle:
的UIButton(即一个类别)中,该方法只执行setTitle:forControlState:
方法。使用这种方法,您根本不需要setNeedsDisplay
方法。