我在A页面上有一个按钮,点击按钮之后要改变背景图片,然后延迟两秒(让用户看到图片已更改)然后跳转我在改变图片之后用了[NSThread sleepForTimeInterval:2.0];来延迟两秒,然后跳转但是最后发现,背景图片根本就没有改变,卡住了两秒,然后跳转的
如果不用延迟这个语句的话是可以更改成功的
请问大神,这是怎么回事?

解决方案 »

  1.   

    试试用方法:performSelector:withObject:afterDelay:
    延迟时间作为afterDelay的参数
      

  2.   

    嗯,1楼说的对,用这个方法是可以实现延迟执行的。在按钮的响应事件里,先执行改变背景的语句,然后再执行1楼说的语句,就可以了。perfacte!!!
      

  3.   

    1楼说的对,使用performSelector
    还有方法就是使用代码段
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^{
    [NSThread sleepForTimeInterval:2.0];
    dispatch_sync(dispatch_get_main_queue(),^{
    //跳转页面
    });
    });
      

  4.   

    从来不用NSThread,可以用performSelector,也可以用block,但是不是如楼上说的,而是用dispatch_after,示例如下:
    int64_t delayInSeconds = 2.0;
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
        ///
    });你在XCode中输入 dispatch 代码就会自动生成了。