2012-03-13 58 views
0

我正在開發一個具有多個viewController的應用程序。第一個是「MainMenu」,第二個是「Page1」。Objective-c:轉到下一頁時「Please wait」消息

我想在下一頁顯示「Please wait ...」的提示。我的代碼如下,但加載「page1」後出現警報。當用戶按下「MainMenu」頁面上的按鈕時,我希望它出現。

你有什麼建議可以實現嗎?

在此先感謝。

AppDelegate.m

-(void)showAlert{ 
altpleasewait = [[UIAlertView alloc] initWithTitle:@"Please Wait..." message:nil delegate:self cancelButtonTitle:nil otherButtonTitles: nil]; 

[altpleasewait show]; 

UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; 

indicator.center = CGPointMake(altpleasewait.bounds.size.width/2, altpleasewait.bounds.size.height - 50); 
[indicator startAnimating]; 
[altpleasewait addSubview:indicator];  
} 


-(void)waitASecond{ 
[self performSelector:@selector(dismissAlert) withObject:self afterDelay:0.8];  

} 
-(void)dismissAlert{ 

[altpleasewait dismissWithClickedButtonIndex:0 animated:YES]; 

} 

MainMenu.m

-(void)gotoNextPage{ 

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate]; 
[appDelegate showAlert]; 
page1 = [self.storyboard instantiateViewControllerWithIdentifier:@"Page1"]; 
[self presentModalViewController:page1 animated:NO]; 

} 

Page1.m

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate]; 

-------------some methods-------------- 

[appDelegate waitASecond]; 
+1

你應該嘗試MBProgressHUD:https://github.com/jdg/MBProgressHUD – 2012-03-13 13:59:06

+0

我第二是,完美的作品 – basvk 2012-03-13 14:00:51

+0

哇這很好之一。我會稍後再試。 – user973067 2012-03-13 15:37:18

回答

1

這只是一個建議。我會做以下。

  1. 在Page1.m -viewDidAppear,我會打電話給警報視圖彈出。這發生在主線程上。所以我不妨礙UI顯示或響應。

  2. 我會移動與加載Page1內容有關的所有方法,例如,要從URL中讀取的文本,塊,並使用GCD,以便它們發生在後臺,並且不阻塞主線程。

一旦裝載完成...

  1. 我會帶他們,更新UI,並解除警報視圖。

這是一個簡單的教程,可能會給你一個想法。 http://www.raywenderlich.com/4295/multithreading-and-grand-central-dispatch-on-ios-for-beginners-tutorial

+0

感謝這一個簡單的作品! – user973067 2012-03-14 10:29:10

1

你可以做的就是把警報在IBAction爲。檢查他們何時關閉警報,然後更改視圖。或者使用NSTimer,將選擇器分配給該定時器並實現該選擇器以更改視圖。

相關問題