使用(void)awakeFromNib

使用(void)awakeFromNib

问题描述:

我想在应用程序启动时运行一个操作。如果field1中没有文本,则动作checkAtStart应该显示警报,如果field1中有文本,则隐藏startView。 checkAtStart工作正常,如果分配给一个按钮,但是当我尝试使用(void)awakeFromNib来运行它时,无论发生什么,alert都将显示,startView永远不会隐藏。它可能很简单,我忘记了。任何帮助表示赞赏!使用(void)awakeFromNib

这里是我的代码:

- (void)awakeFromNib { 
[self checkAtStart:self]; 
} 

- (IBAction)checkAtStart:(id)sender 
{ 
if (field1.text == nil || [field1.text isEqualToString:@""]) { 
    NSString *msg = nil; 

    msg = nil; 

    UIAlertView *alert = [[UIAlertView alloc] 
     initWithTitle:@"Test Message" 
     message:@"Test Message" 
     delegate:self 
     cancelButtonTitle:@"Close" 
     otherButtonTitles: nil]; 
    [alert show]; 
    [alert release]; 
    [msg release]; 
} 
else 
{ 
    startView.hidden = YES; 
} 
} 

我假设所有这些代码是在某种形式的视图控制器。

-awakeFromNib将在从NIB加载后发送到控制器。此时,除非将这些值放入NIB文件,否则在文本字段中没有任何价值。

您可能使用了-viewDidLoad或其他视图事件消息来为您的模型分配一些值到文本字段中。这是什么让你的IBAction分配给按钮时工作。

+0

您对-viewDidLoad正确。由于-viewDidLoad正在赋值,所以我包含了[self checkAtStart:self];最后,这似乎是诀窍。感谢您的澄清! – potato 2010-04-15 20:47:46