- (void)applicationWillEnterForeground:

时间:2016-02-05 19:17:10

标签: ios boolean settings

也许有人可以帮助我。

当我的应用首次启动时,会出现UIAlertController消息并询问用户是否需要转到设置应用。使用以下代码。

 dispatch_async(dispatch_get_main_queue(), ^{
            [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=Wi-Fi"]];
        });

返回App后,使用ViewDidLoad中的此代码显示相同的UIAlertController消息:

-(void)viewDidLoad {
  if (launched == NO) {
     launched = YES; 
    defaults = [NSUserDefaults standardUserDefaults];
    [defaults setBool:launched forKey:@"boolKey"];
    [defaults synchronize];

    My code for the UIAlertController.

   } else if (launched == YES) {

   [self doSomeThing];
  }

}

当info.plist应用程序中的设置未在后台运行时,我的Bool值未被保存:设置为YES,但如果应用程序未在后台运行:设置为NO,则else语句为执行。然而,这并不好,因为我的应用程序被暂停,再次启动时,我需要显示原始消息,但不会,应用程序将恢复到其最后状态。

非常感谢任何建议。

JZ

1 个答案:

答案 0 :(得分:1)

1.-保存到NSUserDefaults不会将任何内容保存到info.plist中。 NSUserDefaults有自己的plist,如果你删除你的应用程序就会被删除。

如果您想阻止启动相同的警报视图:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if([defaults boolForKey:@"boolKey"]) {
    defaults = [NSUserDefaults standardUserDefaults];
    [defaults setBool:YES forKey:@"boolKey"];
    My code for the UIAlertController.
}
else {
     //Whatever you need to do if its not first launch
}

现在下次你点击你的viewDidLoad,因为boolForKey:@“boolKey”有一个YES,你将不会点击该代码,并且不会显示alertView。