gpt4 book ai didi

iphone - 使用 applicationwillenterforeground 显示密码屏幕

转载 作者:行者123 更新时间:2023-12-03 18:45:34 24 4
gpt4 key购买 nike

在 iOS4 之前,我的应用程序的初始 View Controller 会检查 viewWillAppear 中的密码开/关设置变量,如果设置为打开,则会显示一个模式密码屏幕,该屏幕将一直保留在那里,直到输入正确的密码或按下“主页”按钮。

在 iOS4 中,如果我的应用程序一直在后台运行,我希望用户感到放心,因为如果他们将手机交给某人使用,则应用程序中包含的数据将无法轻松访问。

由于应用程序可以返回到任何屏幕(应用程序上次所在的屏幕),因此我想我应该在整个地方使用 UIApplicationWillEnterForegroundNotification 和本地选择器(重复的 EnterPasscode 方法),每个都有正确的 View Controller 来推送基于本地屏幕,但必须有更好的方法。

我在这里可能有一个轻微的概念误解。有人可以建议另一种方法或插入我进行下一步吗?我可以将其作为共享方法,但仍然知道要推送的正确本地 View Controller 吗?

谢谢

编辑/更新:

简短版本:它有效,但可能还有更好的方法(感谢任何帮助)...

我使用 View Controller 创建了一个标准单例。

PasscodeView.h 包含:

UIViewController *viewController;
@property (nonatomic, retain) UIViewController *viewController;

PasscodeView.m 包含:

@synthesize viewController;

我把它放在 AppDelegate 中:

-(void)applicationWillEnterForeground:(UIApplication*)application {

PasscodeView *passcodeView = [PasscodeView sharedDataManager];
UIViewController *currentController = [passcodeView viewController];
NSLog(@"%@", currentController); //testing
EnterPasscode *passcodeInput = [[EnterPasscode alloc] initWithNibName:@"Passcode" bundle:nil];
[currentController presentModalViewController:passcodeInput animated:NO];
[passcodeInput release];
}

以及我所有 viewDidLoad 中的以下内容,在进入每个屏幕时更新当前 View Controller (只有 2 行,但似乎仍然有更好的方法):

PasscodeView *passcodeView = [PasscodeView sharedSingleton];
passcodeView.viewController = [[self navigationController] visibleViewController];

我希望有一种方法可以从 applicationWillEnterForeground 获取当前 View Controller ,但我找不到它 - 仍然感谢这里的任何帮助。

为了保持一致性,我更改了一行并添加了一行以获得导航栏以匹配应用程序的其余部分并包含标题。

UINavigationController *passcodeNavigationController = [[UINavigationController alloc] initWithRootViewController:passcodeInput];
[currentController presentModalViewController: passcodeNavigationController animated:NO];

最佳答案

您可以通过实现将这种行为集中在您的应用程序委托(delegate)中

-(void)applicationWillEnterForeground:(UIApplication*)application;

您可以实现一个存储当前适当的模态视图 Controller 的单例,并在每个 View Controller 的 viewWillAppear 中更新它。

编辑:我假设您已经有一系列想要显示的 View Controller 。我怀疑你真的需要它。如果您调用了 PasscodeInputController,那么您的 applicationWillEnterForeground 将类似于:

-(void)applicationWillEnterForeground:(UIApplication*)application {
UIViewController *currentController = [window rootViewController];
PasscodeInputController *passcodeInput = [[PasscodeInputController alloc] init];

[currentController presentModalViewController:passcodeInput animated:NO];
[passcodeInput release];
}

我希望能更直接地解决您的问题。

关于iphone - 使用 applicationwillenterforeground 显示密码屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3434469/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com