如何在应用程序委托iOS10 Objective C中的applicationWillEnterForeground方法中以模态方式呈现UIViewController
Posted
技术标签:
【中文标题】如何在应用程序委托iOS10 Objective C中的applicationWillEnterForeground方法中以模态方式呈现UIViewController【英文标题】:How to present modally UIViewController in applicationWillEnterForeground method in app delegate iOS10 Objective C 【发布时间】:2016-11-08 13:43:45 【问题描述】:我想在进入前台应用程序时展示一个 UIViewController。 我在 Objective C appDelegate 应用程序的 applicationWillEnterForeground 方法中使用此代码,但它不适用于我。
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
PasscodeViewController *vc = [sb instantiateViewControllerWithIdentifier:@"passcodeVCID"];
[self presentViewController:vc animated:YES completion:nil];
【问题讨论】:
你认为 appDelegate 中的self
是什么?
我习惯在 uiviewcontroller 中使用 SELF。有作品。但我不知道如何在这里处理。
那是因为在 UIViewController 类中,self 是一个 ViewController。 presentViewController
是在 UIViewController.h 中定义的方法,因此它在那里工作。在 AppDelegate 中,self 是 AppDelegate,它没有名为 presentViewController
的方法。
您需要先访问您当前可见的 VC,然后使用该实例调用 presentViewController 方法。请参阅this answer 了解如何获取当前可见的 VC。
【参考方案1】:
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
PasscodeViewController *vc = [sb instantiateViewControllerWithIdentifier:@"passcodeVCID"];
// Need to present with rootviewcontroller
[self.window.rootViewController presentViewController:vc animated:YES completion:nil];
【讨论】:
我将此代码用于 applicationWillEnterForeground 方法,但它不起作用。 尝试一次 [self.window.rootViewController.navigationController presentViewController:vc animated:YES completion:nil];以上是关于如何在应用程序委托iOS10 Objective C中的applicationWillEnterForeground方法中以模态方式呈现UIViewController的主要内容,如果未能解决你的问题,请参考以下文章
Objective-c (iOS) 中常见的 HTTP 请求委托模式