applicationWillEnterForeground提供一个视图控制器
每当- (void)applicationWillEnterForeground:(UIApplication *)application
触发时,我都需要显示一个PIN视图控制器。 我有多个视图控制器,当应用程序进入后台,用户可以在任何一个。
问题是我不知道如何在目前处于活动状态的视图控制器上显示PIN视图控制器。 以下是我的实现看起来如何:
- (void)applicationWillEnterForeground:(UIApplication *)application { ResourceSingleton *resource = [ResourceSingleton sharedSingleton]; if ([resource checkIfPINIsEnabled]) { PinViewController *pinView = [[PinViewController alloc] initWithMode:kPINViewControllerModeEnter]; pinView.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; [self.window.rootViewController presentViewController:pinView animated:YES completion:NULL]; } }
但是,只有当我在第一个视图控制器(根目录)时,PIN视图才会出现。 如何在任何视图控制器上popup它?
我已经看到使用applicationwillenterforeground作为密码屏幕,但必须有更好的方法,或者我错了吗? 这将是对于iOS 7,所以如果只有7有这样的function它确定,但我很确定它也可以在6上完成。
您可以让应用程序委托处理PIN视图的逻辑,并将其视为视图,而不是视图控制器。 只要添加视图作为窗口的子视图,它将显示在其他任何东西。
- (void)applicationWillEnterForeground:(UIApplication *)application { UINib *pinNib = [UINib nibWithNibName:@"PINView" bundle:nil]; UIView *pinView = [pinNib instantiateWithOwner:self options:nil][0]; [self.window addSubview:pinView]; }
如果您让应用程序委托xib的文件所有者,那么您可以将视图中需要的任何出口连接到应用程序委托。
如果您的根视图控制器是一个NavigationController,那么在大多数情况下推送或呈现应该工作。 你已经有了所有的代码,只需要创build一个导航控制器。 唯一的情况是,如果有一个模态视图控制器已经出现,这将不起作用。 在这种情况下,需要先解决。
这也是一个有点麻烦的实施,也照顾这种情况。
AKPresentedViewController *pres = [self.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:@"pres"]; UINavigationController *navi = ((UINavigationController*)self.window.rootViewController); if (navi.presentedViewController) { [navi.presentedViewController dismissViewControllerAnimated:YES completion:^{ [navi presentViewController:pres animated:NO completion:nil]; }]; } else { [navi presentViewController:pres animated:NO completion:nil]; }
你可以在这里提到你的PIN视图控制器。
而且为了popupPIN视图控制器,我猜测用户必须input正确的PIN码才能使PIN视图控制器消失。 在这种情况下,它可以自动popup:
[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
希望这可以帮助!
- 在ios8中使用appdelegate暂停spritekit游戏
- 如何使用故事板呈现飞溅/login视图控制器
- 在iOS(Facebook和Instagram)中处理不同的URLscheme
- 如何从其他ViewController中更改AppDelegate中的RootViewController?
- 从UIViewController更改AppDelegate的属性不起作用
- iOS:如何在X小时内每隔一小时在睡眠模式下自动发送电子邮件与iPad?
- iPhone registerForRemoteNotificationTypes不会产生错误,但不会触发授予设备令牌的委托
- 当应用程序处于后台状态Swift时暂停计时器
- 如何从AppDelegate中移动这些stream程,并从每个Call中设置个别代理?