2013-04-10 157 views
0

我正在處理一個小應用程序,我希望在應用程序啓動後立即顯示一個警告框。我認爲將代碼放入viewDidLoad會導致這種情況發生,但似乎並非如此。viewDidLoad未被調用

我希望能夠做的是兩次警報顯示。第一個是玩家1,第二個是玩家2.現在我正在努力爭取第一個人的工作。

這是正確的方法來解決這個問題還是有更好的方法嗎? 謝謝。

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
NSLog(@"here..."); 
// Do any additional setup after loading the view. 
UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Alert" message:@"Player 1" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
alert.alertViewStyle = UIAlertViewStylePlainTextInput; 
[alert show]; 
[alert release]; 
} 

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ 
NSLog(@"Entered: %@",[[alertView textFieldAtIndex:0] text]); 
} 

視圖控制器僅由這些方法:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
if (self) { 
    BoxView* myView = [[BoxView alloc] 
         initWithFrame:[[UIScreen mainScreen] bounds]]; 
    self.view = myView; 
    [myView release]; 
} 
return self; 
} 

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
// Do any additional setup after loading the view. 
} 

- (void)didReceiveMemoryWarning 
{ 
[super didReceiveMemoryWarning]; 
// Dispose of any resources that can be recreated. 
} 
+0

我認爲這是問題的最好展現警報出viewDidLoad中的。 – 2013-04-10 02:08:42

+0

我是一個非常新的Objective-C程序員。有什麼你會建議,會更好? – joshft91 2013-04-10 02:09:56

+0

你能告訴我們你在哪裏構建包含該視圖的視圖控制器?該視圖會延遲加載,因此只有在有人要求查看時,viewdidload纔會啓動。顯示警報的更好的地方在於viewDidAppear :,但是直到你對任何阻止viewDidLoad的東西進行排序後纔會調用它。 – danh 2013-04-10 02:13:43

回答

1

的問題是,viewDidLoad是爲時尚早。沒有界面!等到至少viewDidAppear:

見我很類似的答案在這裏:

https://stackoverflow.com/a/15867468/341994

+0

感謝您的鏈接。 viewDidAppear位於哪裏?我在視圖控制器中有一個viewDidLoad,但沒有viewDidAppear。我是否必須「手動」創建該方法? – joshft91 2013-04-10 02:17:27

+0

是的,如果模板沒有給你,你只需要編寫自己的覆蓋。對於任何*類您也是繼承類。以下是關於繼承和重寫以便接收事件的書的一部分:http://www.apeth.com/iOSBook/ch11.html#_subclassing_2這裏是我對這種視圖控制器生命週期事件的討論:http:/ /www.apeth.com/iOSBook/ch19.html#_view_controller_lifetime_events – matt 2013-04-10 02:21:15