【问题标题】:Adding An AlertView At viewWillAppear, iPhone在 viewWillAppear 中添加 AlertView,iPhone
【发布时间】:2010-12-21 20:19:49
【问题描述】:

我试图在视图出现后立即显示警报视图(不使用按钮)。在 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 中的新视图,仍然没有运气

【问题讨论】:

    标签: iphone objective-c crash alert terminate


    【解决方案1】:

    问题在于两个核心动画(一个用于查看当前视图,一个用于显示警报)重叠。您需要按照以下解决方法将这两个动画移动分开:

    1. 警报代码在viewDidAppear,而不是viewWillAppear

    2. 致电[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];
    }
    

    【讨论】:

    • 谢谢,错误消失了,警报正在显示...但是 3 次!它显示然后自动消失。然后它会重新出现,但需要您在再次出现之前将其关闭!
    • 我怀疑您多次显式调用viewDidAppear:,或者委托方法意外调用showHello。您需要显示更多代码。
    【解决方案2】:

    尝试将警报放在 viewDidAppear 中。

    另外,iboutlet 是干什么用的?试着把整个东西都拿出来。

    【讨论】:

      【解决方案3】:

      在 Interface Builder 中打开您的 xib 文件,并控制从文件所有者(应属于 BatteryAppViewController 类)拖动到您的视图(不是警报),然后从弹出的菜单中选择视图。日志表明您尚未建立此插座连接。

      【讨论】:

        【解决方案4】:

        您没有在 Interface Builder 中连接 UIAlerts。警报没有可自定义的 nib,因此您无法在界面生成器中加载它们。您需要删除:

        IBOutlet UIView *alert;
        

        ...完全。

        错误消息表明您没有为视图控制器定义视图。您需要在 Interface Builder 中进行设置。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-12-20
          • 1970-01-01
          • 2017-05-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-03
          相关资源
          最近更新 更多