使用(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分配给按钮时工作。
您对-viewDidLoad正确。由于-viewDidLoad正在赋值,所以我包含了[self checkAtStart:self];最后,这似乎是诀窍。感谢您的澄清! – potato 2010-04-15 20:47:46