Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIAlertView在启动时产生警告消息_Ios_Xcode_Uialertview_Compiler Warnings_Nsnotifications - Fatal编程技术网

Ios UIAlertView在启动时产生警告消息

Ios UIAlertView在启动时产生警告消息,ios,xcode,uialertview,compiler-warnings,nsnotifications,Ios,Xcode,Uialertview,Compiler Warnings,Nsnotifications,nilMy应用程序需要运行一些检查,然后可能在我的应用程序激活时显示UIAlertView。为此,我已注册didBecomeActiveNotification并在此处运行我的检查 在初始启动期间,每当my UIAlertView弹出时,就会出现此问题,这会导致应用程序在应用程序启动消息的末尾预期有一个根视图控制器。我猜这是因为UIAlertView在ViewDid出现之前显示: 如果不是在didBecomeActiveNotification中,我应该如何触发UIAlertView 编辑:要在

nilMy应用程序需要运行一些检查,然后可能在我的应用程序激活时显示UIAlertView。为此,我已注册didBecomeActiveNotification并在此处运行我的检查

在初始启动期间,每当my UIAlertView弹出时,就会出现此问题,这会导致应用程序在应用程序启动消息的末尾预期有一个根视图控制器。我猜这是因为UIAlertView在ViewDid出现之前显示:

如果不是在didBecomeActiveNotification中,我应该如何触发UIAlertView

编辑:要在新项目中触发此操作,请执行以下操作

1新项目->单视图应用程序

2在Viewcontroller.m中,将以下内容添加到viewDidLoad:

3在ViewController.m中添加以下方法

 -(void)didBecomeActiveNotification:(NSNotification *)notification
{   
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:nil message:nil delegate:self cancelButtonTitle:@"ok" otherButtonTitles: nil];
    [alertView show];
    [alertView release];
}
4构建并运行

如果不是在didBecomeActiveNotification中,我应该如何触发UIAlertView

我会在根视图控制器中触发它。

您的AppDelegate无法启动UIAlertView。这只能由ViewController完成

在我的一个应用程序中,我有一个类似的东西,我想在应用程序启动或激活时检查一些东西,并向用户展示一个模态viewController

我所做的是创建一个新类,它有一个方法:

+(BOOL)checkIfShouldShowAlert
然后,可以在每个ViewController的ViewWillDisplay方法中调用此方法,如下所示:

if ([myCheckerClass checkIfShouldShowAlert]) {
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle...
    [alertView show];
}

通过使用一个单独的类,它使您的代码在将来更易于更新

正如我所说,没有控制台消息,也没有编译器警告。 您能否确认该消息仅在显示警报时可见,并且在没有警报的情况下没有此类消息


您是如何注册didBecomeActiveNotification的?使用[[NSNotificationCenter defaultCenter]addObserver:自选择器:@SelectorDibEcomeActiveNotification:名称:UIApplicationDibEcomeActiveNotification对象:nil]在视图内加载DidLoad;我尝试在applicationIDBECOMEACTIVE的app delegate和根视图控制器的didBecomeActiveNotification上显示警报,并使用您提供的代码注册,这两种方法都有效。你认为你的应用程序有什么特别的地方吗,也许是根视图控制器初始化?我不是说它不工作,它工作得很好。我只是收到了控制台的警告,想弄清楚原因。不幸的是,或者幸运的是,我没有看到这样的警告。您能否确认该消息仅在显示警报时可见,并且在没有警报的情况下没有此类消息?顺便问一下,这真的是编译器警告还是控制台消息?根视图控制器并不总是在视图堆栈的顶部。我已经在根视图控制器中完成了上述所有操作。我正在代理应用程序IDBECOMEACTIVE中成功创建警报,您一定是错了。另外,如果仔细阅读问题,则会在视图控制器中创建警报。哦!在这种情况下,当视图变为可见时,通知变为活动状态可能已经被调用,因此您的viewController仅在通知发生后将自身设置为收件人。我在我的应用程序中使用一个NSUserDefault BOOL;在应用程序关闭之前,我将其设置为“是”,而在任何viewController第一次调用MyCheckerClass时,我将其设置为“否”:您是否使用故事板?听起来您从未在AppDelegate中创建RootViewController。您的AppDelegate应该有一个名为window的属性;确保在ApplicationIDFinishLaunching中创建一个viewController并将其分配给AppDelegate的窗口属性let me answer you。该问题存在于没有脚本的应用程序中,其中创建了UIWindow,并且UIViewController视图作为窗口的子视图添加到didFinishLaunchingWithOptions。第一次启动应用程序的标志是无用的,因为可能会在应用程序启动时显示警报,然后我们会收到有线消息。检查应用程序是否已启动并在ViewDidDisplay上显示警报将是一种过分的做法。嗯,对我来说会的。是的,只有在显示警报时才会发生。我看到你在使用模拟器5.1,而我在使用5.0,虽然可能是5.1中修复的某种错误?@trapper你可能是对的,我可以在5.0模拟器中重现消息。但好消息是:iOs 3.2和5.1设备没有消息。我将能够在周末后测试Agains5.0设备。在5.1模拟器中测试,我也不再有错误。
+(BOOL)checkIfShouldShowAlert
if ([myCheckerClass checkIfShouldShowAlert]) {
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle...
    [alertView show];
}