2013-04-10 119 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