从 AppDelegate 呈现特定的视图控制器

2023-11-27

每次我的应用程序处于活动状态时,我都尝试呈现一个视图控制器(密码请求类型视图)。输入正确的密码后,它应该从堆栈中弹出。我尝试推送的密码视图不是初始视图控制器,因此我无法从 AppDelegate 的 applicationDidBecomeActive 访问它。

我还尝试从 MainViewController 的 ViewWillAppear 推送密码视图,但当应用程序变为活动状态时它不会被调用;仅当屏幕刷新时。

过去几天我一直在研究类似的问题,但我仍然不明白正确的方法。我听说我可能无法以这种方式推送视图,因为 applicationDidBecomeActive 可能会在 Storyboard 或 NavigationController 连接/初始化等之前被调用。

如果有人能为我提供推送/呈现视图的正确方法,或者如果有其他地方可以更好地执行此类操作,我将不胜感激。

Solved:我刚刚从故事板中删除了视图并使用了笔尖。我用了:

PasscodeUnlockVC *passcodeUnlock = [[PasscodeUnlockVC alloc] initWithNibName:@"PasscodeUnlockVC" bundle:[NSBundle mainBundle]];
[(UINavigationController *)self.window.rootViewController pushViewController:passcodeUnlock animated:NO];

查看层次结构数据:

(gdb) po [[(id)UIApp keyWindow] recursiveDescription]
<UIWindow: 0x736a4b0; frame = (0 0; 320 480); layer = <UIWindowLayer: 0x7367b40>>
   | <UILayoutContainerView: 0x76977a0; frame = (0 0; 320 480); autoresize = W+H; layer =     <CALayer: 0x769de60>>
   |    | <UINavigationTransitionView: 0x7692110; frame = (0 0; 320 480); clipsToBounds = YES;      autoresize = W+H; layer = <CALayer: 0x769a8c0>>
   |    |    | <UIViewControllerWrapperView: 0x73868d0; frame = (0 64; 320 416); autoresize =  W+H; layer = <CALayer: 0x75510e0>>
   |    |    |    | <UIView: 0x76b93e0; frame = (0 0; 320 416); autoresize = W+H; layer = <CALayer: 0x7386850>>
   |    | <UINavigationBar: 0x73664b0; frame = (0 20; 320 44); clipsToBounds = YES; opaque =  NO; autoresize = W; layer = <CALayer: 0x7366550>>
   |    |    | <UINavigationBarBackground: 0x7360ea0; frame = (0 0; 320 44); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x7366520>> - (null)
   |    |    | <UINavigationItemView: 0x76b95e0; frame = (160 21; 0 0); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x76aa8e0>>
   |    |    | <UINavigationItemButtonView: 0x7550650; frame = (5 7; 73 30); opaque = NO;   userInteractionEnabled = NO; layer = <CALayer: 0x7368b40>>
Current language:  auto; currently objective-c
(gdb) 

我建议你使用applicationWillEnterForeground:, not applicationDidBecomeActive:,因为它更适合多任务手势。例如,如果用户双击主页按钮以显示任务栏,然后在不更改应用程序的情况下关闭任务栏,则您不希望显示锁定屏幕。

想必你的AppDelegate has a window属性,并且您知道窗口的根视图控制器是UINavigationController.

- (void)applicationWillEnterForeground:(UIApplication *)application {
    PasscodeViewController *pvc = [[PasscodeViewController alloc] init];
    [(UINavigationController *)self.window.rootViewController pushViewController:pvc animated:NO];
    // [pvc release]; if not using ARC
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 AppDelegate 呈现特定的视图控制器 的相关文章

  • 在 viewWillAppear( ) 中获取空值,但在 viewDidLoad( ) 中获取有效值

    When print mess 被称为来自viewDidLoad函数 它打印预期的内容 但是当从viewWillAppear函数 它给出空输出 完成分配后标签也没有更新viewDidLoad 为什么是这样 主视图控制器 if segue i
  • 如何比 CGContextStrokePath 更快地渲染线条?

    我正在使用 CGContextStrokePath 绘制约 768 个点的图表 问题是 每一秒我都会得到一个新的数据点 从而重新绘制图表 目前 这个已经很繁忙的应用程序占用了 50 的 CPU 图形绘制是在UIView 中的drawRect
  • 多个 ViewController(containerView?childView?viewController 的实例?)

    我需要在另一个视图之上添加一个新视图 带有 ViewController 用户与这个新视图交互了一段时间 然后我想将其删除 在旧版本的 Xcode 中 我可以将其添加为子视图 我现在收到 EXC BAD ACCESS 错误 我不希望添加的视
  • 在 iOS 上的 SceneKit 中导入 3d 模型

    从 URL 导入 obj 文件并将其转换为 SCNNode 时遇到问题 这是代码 swift3 let url URL init string https cloud box com shared static ock9d81kakj91d
  • Xcode 9.0.1 应用程序分发程序已更改

    最近我将 Xcode 升级到了 Xcode 9 1 之后 当我尝试发布我的应用程序时 Xcode 不允许选择我为临时创建的分发配置文件 这么说 配置文件不是 IOS 应用商店配置文件 如果 Xcode 9 1 的应用程序分发过程有变化 请告
  • CocoaPods 生成无效的项目文件(未找到标头)

    我有一个带有 Podfile 的项目文件 如下所示 platform ios 7 0 def import pods pod Specta 0 1 8 pod Expecta 0 2 1 pod RestKit 0 20 3 pod Mag
  • Expo 应用程序“您的应用程序正在使用广告标识符 (IDFA)”

    我正在尝试将应用程序上传到应用程序商店 每次我上传二进制文件时 苹果都会坚持认为我的应用程序正在使用广告 而我从未实现过这样的事情 我查看了文档并删除了涉及的所有代码ASIdentifier and adIdentifier我不太确定我错过
  • ObjC <-> Swift 桥接和工厂方法

    我想从 Swift 使用一些 Objective C 类 由于超出了这个问题范围的原因 我的班级init方法被标记为不可用 相反 有一个工厂方法 这是我的班级的简化形式 interface MyClass NSObject instance
  • 是否可以使用 iOS SDK 更改 Amazon Cognito 中的用户名?

    正如标题中所写 是否可以更改 Amazon Cognito 用户的用户名 我在文档中找不到任何内容 可以更新preferred username使用 iOS SDK 的 Cognito 用户 使用updateAttributesAPI 调用
  • 在 Objective-C 中获取对象的属性数组

    Objective C 中是否可以获取对象所有属性的数组 基本上 我想做的是这样的 void save NSArray propertyArray self propertyNames for NSString propertyName i
  • 在 swift 中设置状态栏的自定义颜色?

    在视图控制器上 我想将状态栏的颜色设置为黑色 但我无法更改它 我为此目的使用下面的代码 func setUpUI self navigationController setNavigationBarHidden true animated
  • iPhone ImageView序列动画

    嘿 尝试将一个简单的 png 序列动画放入我的应用程序中 我在 IB 中放置了第一个框架 并将图形动画出口连接到它 序列中有 54 个 png 名称为 Comp 1 0000 png 到 Comp 1 00053 png 这是我的代码 vo
  • 防止 UITableView 滚动到某个点以下

    如何让 UITableView 允许在某个索引行上方滚动 但在低于某个点时阻止滚动 例如 如果我有第 1 行到第 100 行 其中在给定时间视图中仅出现 5 行 我希望允许用户在第 1 50 行之间滚动 但在第 50 行可见时阻止进一步向下
  • 如何相对于包含视图大小定位子视图?

    我希望能够将我的子视图从顶部定位到超级视图大小的 25 NSLayoutConstraint topPositionConstraint NSLayoutConstraint constraintWithItem containerView
  • RxSwift、RxCocoa 和 UITableview

    我在使用 RxSwift 实现 UITableView 时遇到问题 我尝试使用以下代码将模型数组的可观察对象绑定到表项 models bind to self tableView rx items cellIdentifier Cell c
  • Flutter - 删除 ListView 中项目之间的空间

    我正在使用 ListView builder 函数来创建项目列表 然而 iOS 中每个项目之间的空间很大 截图 你知道如何删除项目吗 看来是默认的 因为我没有添加它 code 列表显示 return Scaffold body ListVi
  • swift 3.0 中的 Sha 256 加密语法错误

    func SHA256 gt String let data self data using String Encoding utf8 let res NSMutableData length Int CC SHA256 DIGEST LE
  • 在 iPhone 模拟器中从硬盘读取文件

    是否可以将文件 从我的普通文件系统 读入在 iPhone 模拟器上运行的 iPhone 应用程序 据我所知 iPhone 本身没有 用户可访问的 文件系统 但这只是为了测试 并且只能在模拟器中运行 该文件将是一个可以在应用程序运行时编辑的文
  • UITableViewController 无法识别的选择器发送到实例

    当我传递一个整数时 我有一个 tableviewcontroller 和一个detailtableviewcontroller UITableViewController setSurveyNumber 无法识别的选择器发送到实例 Biza
  • HTML5 地理定位 - 在 iOS 上无法始终工作

    目前正在使用 HTML5 地理定位 我已经在所有网络浏览器上测试了它 它似乎工作正常 然而 当我在 iPad 上测试地理定位时 它在 iPad mini 上始终有效 但当我将其放在更大的 iPad iPad 2 上时 位置似乎并不总是有效

随机推荐

  • 如何在所有元素上用“js”替换“no-js”类名? [复制]

    这个问题在这里已经有答案了 我想做的是获取具有类名的元素no js并将其替换为js 我不知道该怎么做 我尝试谷歌搜索但找不到任何东西 所以有人知道该怎么做吗 我的目标是让菜单在单击时显示下拉导航 但如果禁用 JavaScript 我希望它在
  • Kadane算法中如何返回最大子数组?

    public class Kadane double maxSubarray double a double max so far 0 double max ending here 0 for int i 0 i lt a length i
  • 将元素添加到状态 React

    我已经有了这样的状态 this setState conversation div conversation map element gt if element id this props id return div div div div
  • 旧应用程序的 PAM 身份验证

    我有一个遗留应用程序 它通过网络异步接收用户名 密码请求 由于我已经将用户名和密码存储为变量 那么在 Linux Debian 6 上使用 PAM 进行身份验证的最佳方法是什么 我尝试编写自己的对话函数 但我不确定将密码输入其中的最佳方法
  • YouTube 链接的正则表达式

    是否有人有一个正则表达式 可以从 几乎 所有可能的 Youtube 链接方式获取 Youtube 视频 非嵌入对象 的链接 我认为这是一个非常常见的问题 并且我确信有很多方法可以将其联系起来 起点是 http www youtube com
  • 修改 String 的 List 迭代

    我无法以这种方式修改列表的元素 for String s list s x s 执行后此列表中的代码元素未更改 如何用最简单的方式通过List实现modyfing的迭代 Since String对象是不可变的 您无法更改正在迭代的值 此外
  • 如何通过 TFS API 获取最新的变更集编号

    如何通过 TFS API 获取最新的变更集编号 你能给我举个例子吗 干得好 TeamProjectPicker tpp new TeamProjectPicker TeamProjectPickerMode SingleProject tr
  • jqGrid:如何在不同页面上使用多选

    简单的问题 很难找到答案 如果我尝试以编程方式选择一行 我会使用以下命令 grid jqGrid setSelection rowId 问题是它只选择当前可见页面上的行 如果rowId在另一页上 则不会被选择 更多信息 我的目标是在第一次加
  • C++函数计算字符串中的所有单词

    我在一次采访中被问到这个问题 显然这是一个简单的问题 但对我来说不是 而且仍然不明显 给定一个字符串 计算其中的所有单词 即使重复也没关系 只是总数 就像文本文件的字数一样 单词是由空格分隔的任何内容 标点符号并不重要 只要它是单词的一部分
  • Python for 循环中的变量赋值

    我知道在Python中 常规的C 风格的变量赋值被对东西的引用所取代 即 a 1 2 3 b a a append 4 print b gives 1 2 3 4 print a gives 1 2 3 4 但我仍然很困惑为什么基本类型会出
  • 如何将自定义模板页面添加到夹层?

    我已经在夹层上玩了几天了 我一直在关注这个blog 这非常有帮助 我现在需要制作一堆需要基于自定义模板的页面 我的自定义模板称为content html 我已经把它放进去了myProject gt myApp theme folder gt
  • 使用 Json.net 将 JSON 数组中的多个项目添加到 C# 中的对象

    谁能告诉我如何反序列化包含多个属性的对象 鉴于下面的场景 代码可以正常工作 public ActionResult Index string json name Person 2 email email protected var emp
  • 我需要在react-native项目中保留.watchmanconfig文件吗

    默认反应本机项目生成 watchmanconfig只是空对象的文件 我可以安全地删除它吗 一个子问题是 我可以做 参考任何看守配置来以某种方式改善反应本机项目体验吗 watchmanconfig可以安全删除 If Watchman没有找到
  • Keycloak - 将所有用户映射到角色

    我知道keycloak已经暴露了下面的api
  • 自定义功能区 onAction 语法问题

    我跟着这里的路线为 Access 应用程序创建自定义功能区 但所有按钮都不起作用 我不断收到一条错误消息 指出 Access 无法找到该函数或宏 即使它是公共的且位于标准模块中 最终我发现如果我使用以下语法它会起作用 onAction fn
  • ViewPager2 无法动态添加删除片段

    在索引处删除 添加片段会导致 Viewpager2 中出现意外行为 这是不可能的ViewPager但预计将与Viewpager2 它会导致重复片段和不同步TabLayout 这是一个演示项目重现了这个问题 有一个切换按钮 可以删除片段并将其
  • Keras 的 dropout 实现正确吗?

    The KerasDropout参考的实施这张纸 以下摘录自该论文 这个想法是在测试时使用单个神经网络而不丢失 该网络的权重是经过训练的按比例缩小的版本 重量 如果在训练期间以概率 p 保留一个单元 则 该单元的输出重量在测试时乘以 p 为
  • git:当前分支和分支创建之间的差异

    想象一下 我三天前创建了分支 B 这是我目前正在工作的分支 现在我想知道自创建分支以来发生了什么变化 X 这给出了 B 和 X 之间的差异 如图中的虚线 git diff A 上面的命令很方便 因为它很短而且我不需要记住 X 但是 我超级懒
  • Caffe 训练无需测试

    我在用Caffe在已知图像数据库上训练 AlexNet 我正在进行基准测试并希望排除测试阶段 这里是solver prototxt对于亚历克斯网络 net models bvlc alexnet train val prototxt tes
  • 从 AppDelegate 呈现特定的视图控制器

    每次我的应用程序处于活动状态时 我都尝试呈现一个视图控制器 密码请求类型视图 输入正确的密码后 它应该从堆栈中弹出 我尝试推送的密码视图不是初始视图控制器 因此我无法从 AppDelegate 的 applicationDidBecomeA