我试图在视图出现后立即显示警报视图(不使用按钮)。在viewcontroller.m我有:
- (void) viewWillAppear:(BOOL)animated
{
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle: @"User Information" message: @"Hello"
delegate: self cancelButtonTitle:nil otherButtonTitles: @"Continue", nil];
[alert show];
[alert release];
}
并在viewcontroller.h中我有:
IBOutlet UIView *alert;
我没有对我的.xib文件做过任何事情。
在模拟器上运行时,我在控制台中获得以下内容:
2009-11-30 23:41:36.079 BatteryApp [867:20b] ***由于未捕获的异常'NSInternalInconsistencyException'终止应用程序,原因:' - [UIViewController _loadViewFromNibNamed:bundle:]加载了“BatteryAppViewController”笔尖但是视图插座没有设置。'
我出错的任何想法,与我的xib有关吗?
编辑//我将警报连接到我的xib中的新视图,仍然没有运气
答案 0 :(得分:2)
问题在于两个核心动画(用于查看当前视图的动画和用于显示警报的动画)重叠。您需要按照以下解决方法分离这两个动画移动:
将提醒代码放在viewDidAppear
,而不是viewWillAppear
致电[alert performSelector:@selector(show) withObject:nil afterDelay:0.0]
。这可确保在完成当前动画后发生警报。
您可能还需要小心释放alert
。如果我是你,我将有一个单独的方法(例如showHelloAlert),然后从viewDidAppear调用它:
- (void)viewDidAppear: (BOOL)animated {
[self performSelector:@selector(showHello) withObject:nil afterDelay:0.0f];
[super viewDidAppear:animated];
}
答案 1 :(得分:0)
尝试将警报放在viewDidAppear中。
另外,iboutlet是为了什么?试着把整个事情搞清楚。
答案 2 :(得分:0)
在Interface Builder中打开xib文件,并控制从文件所有者(应该是类BatteryAppViewController
)拖动到您的视图(而不是警报),然后从弹出的菜单中选择视图。日志表明您没有建立此插座连接。
答案 3 :(得分:0)
您没有在Interface Builder中连接UIAlerts。警报没有可自定义的nib,因此您无法在界面构建器中加载它们。您需要删除:
IBOutlet UIView *alert;
...完全。
错误消息表明您没有为视图控制器定义视图。您需要在Interface Builder中进行设置。