gpt4 book ai didi

iphone - Xcode:在 applicationDidBecomeActive 中显示登录 View

转载 作者:可可西里 更新时间:2023-11-01 04:36:04 25 4
gpt4 key购买 nike

在我的应用程序中,我想显示一个登录屏幕 - 它将在应用程序启动时和应用程序激活时显示。作为引用,我使用的是 Storyboard、ARC,它是一个标签栏应用程序。

因此,我需要在 applicationDidBecomeActive 方法中执行该过程:

- (void)applicationDidBecomeActive:(UIApplication *)application
{
if ( ... ) { // if the user needs to login
PasswordViewController *passwordView = [[PasswordViewController alloc] init];
UIViewController *myView = self.window.rootViewController;
[myView presentModalViewController:passwordView animated:NO];
}
}

在某种程度上这确实有效 - 我可以在 viewDidAppear 中调用一个方法,该方法显示一个警报 View 以允许用户登录。但是,这是不可取的,我想登录文本框和其他 ui 元素。如果我不调用我的登录方法,则什么也不会发生并且屏幕保持黑色,即使我在 View 上放置了标签和其他元素也是如此。

有谁知道解决这个问题的方法吗?我的密码 View 嵌入在导航 Controller 中,但与主 Storyboard分离。

最佳答案

各种各样的答案最终让我找到了一个看起来不太复杂的答案,所以我会把它贴在这里——老实说,它看起来真的很好。

首先,我的密码 View 嵌入在导航 Controller 中(编辑器 -> 嵌入),它使用带有 id 的模式转场连接到主选项卡栏 Controller ,在我的例子中为“loginModal”。

applicationDidBecomeActive 方法中放置如下内容:

[self performSelector:@selector(requestPasscode) withObject:nil afterDelay:0.2f];

然后把这个函数放在App Delegate的某个地方

-(void)requestPasscode{
if ( /* If the user needs to login */ ) {
[self.window.rootViewController performSegueWithIdentifier:@"loginModal" sender:self];
}
}

这将在应用启动或进入前台时(例如,切换应用时)显示您的登录 View 。

注意:如果您的应用程序的根目录嵌入在导航 Controller 中,则上述行将不起作用。

但是有两个错误;

  1. 如果用户在关闭应用程序时之前正在查看模态视图
  2. 如果用户在密码 View 中关闭了应用。

这两者都会导致应用程序崩溃,因此以下行进入 applicationWillResignActive 方法。

[self.window.rootViewController dismissViewControllerAnimated:NO completion:nil];

它基本上消除了所有呈现的模态视图。这可能并不理想,但模态视图通常不用于数据输入,因此在许多情况下,这是理想的效果。

关于iphone - Xcode:在 applicationDidBecomeActive 中显示登录 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13516481/

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