2014-08-27 21 views
0

我想做一个简单的ios应用程序。Xcode ios objective c主题

我想单击按钮并更改视图中按钮的背景颜色。

它已经在工作,但我想要做它asnyc。

例如。

Buttton1灰 等待第二个 Button2的灰 等待 等。

这是基源:

int i = 1; 
UIView *view = viewButtons; 
for(UIButton *btnItem in view.subviews) 



    NSString *strValue = [@(i) stringValue]; 
    btnItem.backgroundColor = [UIColor lightGrayColor]; 
    [btnItem setTitle: strValue forState:UIControlStateNormal]; 
    i++; 

    usleep(1000 * 1000); 

谁能帮助我?谢谢!

+1

你为什么要这样做异步?应始终在主线程上进行任何UI更改。 – Mike 2014-08-27 20:56:57

+1

我猜是因为当前的代码会阻止主UI线程 – Paulw11 2014-08-27 20:58:34

+2

在iOS中可能有10种不同的方式来执行定时操作。做一点研究。 – 2014-08-27 21:12:14

回答

0

看看NSTimer。它将允许您指定一个时间间隔以及是否要重复该操作。正如Hot Licks所提到的,还有其他方法可以做到这一点。如果您决定自行创建线程,例如使用GCD,请记住UI更新必须始终在主线程上进行。

0

您可以使用NSTimer(如前所述)或dispatch_after()调用。如果是重复动作,请使用NSTimer并将其设置为重复。如果这是一个不重复的动作,则可以使用NSTimer集合不重复,或者使用dispatch_after()调用。由你决定。绝对不要线程UI代码;有未定义的行为(换句话说,它将无法正常工作)。