使用故事板和分割视图控制器在应用程序启动时正确显示条件登录屏幕?

2024-05-04

这看起来应该很简单,但事实证明它有很多具有挑战性的细微差别 - 而且我还没有在 Stack Overflow 上的其他地方找到完整、清晰和简单地回答这个问题的答案。

简而言之 - 我有一个 iPad 应用程序,它使用故事板来布局应用程序流程,并使用分割视图控制器作为主要根视图控制器。

该应用程序在启动时检查是否存储了登录凭据,如果是,则直接跳转到 UI,如果没有,则显示全屏登录页面。

但挑战是——应该在哪里进行条件检查,以及应该如何实例化登录屏幕?

我已经尝试了所有我能想到的排列。

在应用程序中,委托似乎是显而易见的地方,但调用 segues 或模式弹出窗口似乎被忽略,因为故事板中的视图尚未生效。

在分割视图的细节控制器的启动方法中,似乎是下一个明显的地方。

我能找到的最接近工作解决方案的描述如下:https://stackoverflow.com/a/8224389/529774 https://stackoverflow.com/a/8224389/529774

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"Login"];
    [vc setModalPresentationStyle:UIModalPresentationFullScreen];

    [self presentModalViewController:vc animated:NO];
}

但通过此实现,由分割视图的详细视图控制器调用,底层分割视图会在屏幕上短暂闪烁。

如果我从 viewDidAppear 更改为 viewWillAppear,则不会出现闪烁 - 但即使屏幕旋转为横向,登录视图最终也会以纵向绘制。

正如我所说 - 这种条件登录显示似乎应该是常见且简单的,但我在任何地方都找不到一个简单的工作示例,它结合了分割视图、故事板、旋转意识,并且可以防止 UI 闪烁。

有小费吗?有好的工作示例吗?


我遇到了完全相同的问题,但经过多次搜索,杜安的回答给了我一些见解。他的答案仍然在之前的视图中闪烁,但我通过使用解决了问题:

-(void)viewWillAppear:(BOOL)animated {

    // Check if user is already logged in
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    if ([[prefs objectForKey:@"log"] intValue] == 1) {
        self.view.hidden = YES;
    }
}

-(void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];

    // Check if user is already logged in
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    if ([[prefs objectForKey:@"log"] intValue] == 1) {
        [self performSegueWithIdentifier:@"homeSeg3" sender:self];
    }
}

-(void)viewDidUnload {
    self.view.hidden = NO;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用故事板和分割视图控制器在应用程序启动时正确显示条件登录屏幕? 的相关文章

随机推荐

  • 使用实体框架,如何访问外键列的显示名称?

    我有以下注释 Display Name NotImportant ResourceType typeof MyResxFile public int PhoneModel get set this is the id Display Nam
  • 新的时间轴,如按钮行为

    在新样式的页面选项卡上 赞 按钮不再刷新页面 这打破了 Like gates 的现有工作流程 即在服务器上检查签名的请求 就像页面一样 页面刷新 繁荣 选项卡现在更新为 喜欢 状态 当用户单击新的 赞 按钮时 是否会触发任何类型的事件 或者
  • 与动态功能模块(应用程序包)一起安装时“存储空间不足”

    我有一个使用 Android App Bundle 的 DFM 动态安装的 Unity 项目 使用 Unity 2019 3 导出 并将其上传到 google play 进行内部测试 动态模块可以按需下载 但是当我运行 UnityActiv
  • Android 应用程序不在主屏幕上创建快捷方式图标(从 Play 商店下载)

    从Play商店下载应用程序后 它不会在主屏幕上创建快捷方式图标 它在应用程序抽屉中创建图标 虽然这个东西在大多数设备上运行良好 但对于某些设备 应用程序未创建快捷方式 我检查过 a Play 商店设置和自动添加小部件已标记 b 启动器设置自
  • Symfony2 - 表单和 Twig 模板中的整个子实体

    在 Sonata 管理表单中 我想显示与当前对象相关的所有图像 不需要编辑它们 我设法使用实体字段类型及其属性选项来选择图像 URL 作为标签 以便我可以调用模板中的所有图片 gt add image entity array class
  • Raven Db 可以在 Winhost 上运行吗?

    我尝试在 Winhost 上以嵌入式模式运行 Ravendb 但我收到以下堆栈跟踪的安全异常 System Security CodeAccessSecurityEngine Check Object demand StackCrawlMa
  • 尝试让 GUI 使用 arrayList 在牌组中打印随机卡

    所以我目前正在用java开发一个卡牌战争游戏 我试图让 GUI 屏幕使用 arrayList 从一组卡片图像中打印 2 张随机卡片 必须使用它进行分配 卡片图像文件名为 1 png 2 png 52 png 并存储在 image card
  • 重复取消引用多个指针,效率较低?

    而不是写 string name first gt next gt next gt next gt name int age first gt next gt next gt next gt age 将其写为 node billy bloc
  • 使用 with_items 连接字符串并分配给 Ansible 中的变量

    启动 ec2 实例时 我需要将两个 2 IP 保存到 vars 文件中的变量中 以便稍后在部署期间使用 这就是我保存单个服务器 IP 的方式 name Save server public IP to vars file lineinfil
  • Python 视图与复制错误希望我仅在脚本中使用 .loc

    我正在运行一个很长的脚本 其中有一个数据框df 随着脚本运行 构建和修改df我在命令行中一列又一列地收到此错误 尝试在 DataFrame 的切片副本上设置一个值 尝试 使用 loc row indexer col indexer valu
  • 在 Java、Android 上从 Youtube 下载视频的代码

    我创建了从 Youtube 下载视频的代码 但此代码不适用于 Wi fi 连接 但适用于移动连接 我哪里有错误 import java io File import java io FileOutputStream import java
  • Spring Security 3 以编程方式登录

    我正在使用 spring 创建一个 REST Web 服务 我需要在其中实现登录 注销功能 函数的 url 应类似于 api login 和 api logout 用户名和密码将使用 POST 方法传递 我在 REST Web 服务下面有一
  • 消息在事务处理时未到达 MSMQ

    我在本地计算机中创建了一个私有 MSMQ 我使用以下 C 代码将消息发送到队列 当我将队列更改为事务性队列时 消息未到达 MSMQ 但是 Send 方法中没有抛出异常 我需要做出什么改变才能使其发挥作用 using System using
  • 响应中的有效 JSON

    我正在开发客户端和服务器应用程序 遇到了一个有趣的问题 我们正在创建一个 Restful API 并通过 JSON 响应与客户端进行通信 执行 DELETE 时 我们将返回 200 OK 和空白响应 我们的客户收到 200 OK 但解析 J
  • Ionic 框架:创建项目时 Ionic 构建失败 (v4.12.0)

    I have ionic安装在我的系统中 当我跑步时ionic run app tabs它安装了所有npm包 但随后提示符变为 Downloading binary from https github com sass node sass
  • 使用 NumPy 查找元组列表第二个元素的中位数

    假设我有一个元组列表 如下所示 list a 1 b 3 c 5 我的目标是使用元组的第二个元素来获取元组列表中位数的第一个元素 在上面的情况下 我想要 b 的输出 因为中位数是 3 我尝试使用 NumPy 和以下代码 但无济于事 impo
  • Typescript 中的forwardRef 和defaultProps

    我正在尝试在forwardRef 中使用defaultProps 当我使用没有forwardRef的MessageBox时 它与defaultProps配合得很好 但是 当我使用forwardRef 时 会发生错误 怎么解决呢 打字稿 3
  • Compact Framework 3.5 上的 System.Data.SQLite 问题

    我在我的紧凑框架应用程序中使用 sqlite 来记录系统中的事件 我也在使用系统 数据 SQLite http sqlite phxsoftware com 该事件具有描述其发生时间的时间戳 我将此时间戳记作为刻度存储在我的表中 除此列外
  • C++ 标准是否保证未使用的私有字段会影响 sizeof?

    考虑以下结构 class Foo int a 在 g 中测试 我明白了sizeof Foo 4但这是由标准保证的吗 是否允许编译器注意到a是一个未使用的私有字段并将其从类的内存表示中删除 导致更小的 sizeof 我不希望任何编译器真正进行
  • 使用故事板和分割视图控制器在应用程序启动时正确显示条件登录屏幕?

    这看起来应该很简单 但事实证明它有很多具有挑战性的细微差别 而且我还没有在 Stack Overflow 上的其他地方找到完整 清晰和简单地回答这个问题的答案 简而言之 我有一个 iPad 应用程序 它使用故事板来布局应用程序流程 并使用分