我有一個模態視圖控制器出現,在互聯網上檢查一個服務,然後在完成時自行解散。筆尖包含活動指示器和標籤,以通知用戶發生了什麼。performSelector:withObject:afterDelay:在模態視圖控制器上不工作
更新完成後,標籤更改爲「更新完成」,然後關閉視圖控制器。但是,我希望它延遲幾秒鐘的解僱時間,讓用戶有機會在文本消失之前看到文本。所以我這樣做了:
#pragma mark - AssetLoaderServiceDelegate
- (void)assetLoaderServiceDidFinishLoading:(AssetLoaderService *)service
{
[self.spinner stopAnimating];
self.infoLabel.text = @"Update complete";
[self performSelector:@selector(dismissUpdater) withObject:nil afterDelay:2.0];
}
- (void)dismissUpdater
{
[self dismissModalViewControllerAnimated:YES];
}
但是由於某種原因,選擇器永遠不會被調用。我試過在NSRunLoopCommonModes
模式下運行它,但是這也不起作用。
我必須做一些錯誤的,但我看不出有什麼...
編輯:委託回調的NSOperationQueue
,這可能意味着,當它發出的這不是在同一個線程中實際發生的事情消息回到視圖控制器?所以,我想
[self performSelector:@selector(downloadQueueComplete) withObject:nil afterDelay:0.0 inModes:[NSArray arrayWithObject:NSRunLoopCommonModes]];
其次
- (void)downloadQueueComplete
{
[delegate assetLoaderServiceDidFinishLoading:self];
}
但performSelector似乎並不要麼在這裏工作。
是否dismissUpdater沒有被調用,或dismissModalViewControllerAnimated方法不工作? – rishi
你的意思是:1.調用'assetLoaderServiceDidFinishLoading'; 2.你的模態觀總是在那裏? – sergio
@ rishi - 我的意思是dismissUpdater沒有被調用。 – jowie