0
我有一個下載在後臺運行。它顯示了一些失敗情況下的UIAlertView。延遲UIAlertView的顯示,直到顯示其關聯的viewController
發生此警報時,應用程序可以位於顯示給用戶的任何視圖中,但只能在其中一個視圖中顯示。
我可以推遲UIAlertView的呈現到與其相關聯的viewController向用戶顯示的時間(它的viewDidAppear方法被調用)嗎?
我有一個下載在後臺運行。它顯示了一些失敗情況下的UIAlertView。延遲UIAlertView的顯示,直到顯示其關聯的viewController
發生此警報時,應用程序可以位於顯示給用戶的任何視圖中,但只能在其中一個視圖中顯示。
我可以推遲UIAlertView的呈現到與其相關聯的viewController向用戶顯示的時間(它的viewDidAppear方法被調用)嗎?
聲明您想要顯示視圖的視圖控制器上的屬性。
@interface DownloadViewController : UIViewController
{
UIAlertView *downloadAlertView;
}
@property (retain) UIAlertView *downloadAlertView;
@end
然後,當你發現錯誤,設置視圖控制器的downloadAlertView財產(這將需要你保持由該做下載的對象這個視圖控制器的引用)。
- (void)downloadFailed
{
UIAlertView *alertView = [[[UIAlertView alloc] init] autorelease];
alertView.title = @"Download Failed";
downloadViewController.downloadAlertView = alertView;
}
在
DownloadViewController
實現
然後,
- (UIAlertView *)downloadAlertView
{
return downloadAlertView;
}
- (void)setDownloadAlertView:(UIAlertView *)aDownloadAlertView
{
// standard setter
[aDownloadAlertView retain];
[downloadAlertView release];
downloadAlertView = aDownloadAlertView;
// show the alert view if this view controller is currently visible
if (viewController.isViewLoaded && viewController.view.window)
{
[downloadAlertView show];
downloadAlertView = nil;
}
}
- (void)viewDidAppear
{
if (downloadAlertView)
{
[downloadAlertView show];
downloadAlertView = nil;
}
}
快速的解釋:
不錯的做法。我在上面,但是你能解釋'(viewController.isViewLoaded && viewController.view.window)'conditional ?,是否與'(self.navigationController.visibleViewController == self)'相同? – 2012-03-13 23:33:10
不應該在代碼downloadAlertView中引用self.downloadAlertView? – 2012-03-13 23:39:34
檢查setter的名字,應該是setDownloadAlertView。 – 2012-03-13 23:48:15