我花了一個星期的時間試圖找出如何做到這一點。等待子視圖顯示,然後處理,然後刪除子視圖
我想要做的是顯示子視圖,然後做我的http調用到後端,然後刪除子視圖。
...
//Display view
[superView addSubview:blurredOverlay];
[superView bringSubviewToFront:blurredOverlay];
//After blurredOverlay is displayed, Try to login the user
dispatch_group_t d_group = dispatch_group_create();
dispatch_queue_t bg_queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_group_async(d_group, bg_queue, ^{
//Try to login user
success = [self loginUser];
NSLog(@"Success=%i", success);
[NSThread sleepForTimeInterval:10.0]; //here to force thread to not return immediatly
});
dispatch_group_wait(d_group, DISPATCH_TIME_FOREVER);
//Remove the view after the thread is done processing
[blurredOverlay removeFromSuperview];
這是行不通的。如果我有
[blurredOverlay removeFromSuperview];
取消註釋,blurOverlay從不顯示。如果我將它評論出來,會顯示blurredOvleray,但我顯然無法刪除它。
我需要的是首先顯示blurredOverlay,然後嘗試登錄用戶(顯示blurredOverlay時),並在loginUser返回後,移除模糊的顯示。
我已經嘗試了多種不同的dispatch_group_async變體,但我是新的線程,沒有任何我幫助過。 – lr100 2014-12-05 22:41:23
而不是使用dispatch_groups,使用NSURLSession或NSURLConnection的sendAsynchronousRequest,並在完成塊中刪除覆蓋。 – rdelmar 2014-12-05 22:42:56