在 viewWillAppear、iPhone 上添加 AlertView
-
22-07-2019 - |
题
我试图在视图出现时立即显示警报视图(不使用按钮)。在 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 中的新视图,但仍然没有运气
解决方案
问题在于两个核心动画(一个用于查看当前视图,一个用于显示警报)重叠。您需要按照以下解决方法将这两个动画移动分开:
警报代码是否在
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];
}
其他提示
尝试把警报在viewDidAppear。
此外,什么是对IBOutlet中?尝试采取整个事情了。
打开在界面生成的XIB文件,并控制从该文件的所有者(这应该是类BatteryAppViewController
的)到视图(未警报),选择视图从弹出菜单阻力。日志表明您并未提出这个出口连接。
您不会在Interface Builder连接UIAlerts起来。警报没有定制的笔尖,所以你不能在界面生成器加载它们。您需要删除的:
IBOutlet UIView *alert;
...完全。
该错误消息说,你有没有为你的视图控制器定义的视图。您需要设置了在Interface Builder。