2012-12-11 85 views
0

我正在编写xcode中的应用程序,用于iOs。我有这样的代码:用户交互后刷新屏幕

- (void)buttonAction:(UIButton*)sender{ 

    UIView *figure = (UIView *) [figures objectAtIndex:sender.tag]; 

    [figure.layer setBorderWidth:2.0f]; 
    [figure.layer setBorderColor: [UIColor greenColor].CGColor]; 
    sleep(1); 
    [self cleanScreen]; 

} 

- (void) cleanScreen { 

    //Some code to hide all view objects 

} 

我希望改变边框颜色和宽度的屏幕上都体现1秒钟的项目是由cleanScreen功能删除之前。但是,恰巧这些更改没有反映出来,并且花费了一秒的元素被删除。

我希望在调用cleanScreen之前刷新屏幕。

如何获得我想要的效果?

在此先感谢!

回答

3

代替:

sleep(1); 

使用:

[self performSelector:@selector(cleanScreen) withObject:nil afterDelay:1]; 

sleep()你冻结整个应用程序

+0

很好的解决方案!但如果我的功能有一个参数(例如interger,例如),我怎么能做到这一点。 [self performSelector:@selector(cleanScreen:1)withObject:nil afterDelay:1]; 不起作用。或者,例如,如果我想延迟其他视图控制器调用: [self.view addSubview:self.bMar.view]; –

+1

如果你的函数只有一个参数,你可以在'withObject:'参数中发送它,而不是'nil'创建一个值为 – tkanzakic

+0

的'NSNumber'关于视图的评论我不明白 – tkanzakic