使用Spinner在iOS中休眠功能

时间:2015-05-20 08:20:37

标签: ios spinner sleep nsthread

我有一个微调器功能,可以从进程开始到结束停止。但由于过程需要几毫秒,我无法真正保持旋转器转动。

[NSThread sleepForTimeInterval:2.0]; //method 1
sleep(2); //method2

然后我使用Sleep方法来备用代码并让微调器转动,但它会停止Thread,然后微调器也会停止。这是代码:

if (indexPath.row == 1)
{
    [MBProgressHUD showHUDAddedTo:self.view animated:YES]; //spinner starts

    EmployeeDataSource *aaa=[[EmployeeDataSource alloc]init];
    [aaa Logout: ^(BOOL results){
        if(results == YES){

        [NSThread sleepForTimeInterval:2.0]; //sleeping thread

        //if logout succesfull go to login page
        LoginViewController *lv = [self.storyboard instantiateViewControllerWithIdentifier:@"loginsb"];

            [self presentViewController:lv animated:NO completion:nil];

            [MBProgressHUD hideAllHUDsForView:self.view animated:YES]; //spinner ends

        }
        else{

            NSLog(@"logout not succesfull");
        }           
}];

我希望[MBProgressHUD showHUDAddedTo:self.view animated:YES];至少工作2秒钟,但由于正常流程很快,它会在不到一秒的时间内结束?我怎么能延长这个时间,睡眠方法似乎不合适。你有什么主意吗?谢谢。

1 个答案:

答案 0 :(得分:1)

我认为你应该在一段时间后做你的事情。 为此,请使用此

[self performSelector:@selector(method) withObject:nil afterDelay:1.0];

此处延迟是秒,因此您可以相应地设置它。

或者你也可以使用它。

dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 0.5 * NSEC_PER_SEC);
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
        //Do you stuff here...
    });

愿这对你有所帮助。