gpt4 book ai didi

objective-c - 如何从应用程序层次结构深处的场景回到开头?

转载 作者:行者123 更新时间:2023-11-29 04:21:08 24 4
gpt4 key购买 nike

我有一个带有如下 Storyboard的应用程序:enter image description here

标记为 1 的场景是我的应用程序初始 View ,即用户加载应用程序时看到的第一个场景。这实际上是我的登录/注册场景。

标记为 2 的场景位于应用程序深处,它嵌入在 UINavigationController 中,而 UINavigationController 本身可通过 UITabBarController 访问。该场景有一个注销按钮,可清除 session ,并且还应将用户返回到场景 #1。

返回第一个场景的正确方法是什么?我尝试了几种不同的方法,但成功率为零。这是我尝试过的:

[[self navigationController] popToRootViewControllerAnimated:YES];

不做任何事情,因为(我相信)当#2加载时,它实际上是当前navigationController的 Root View Controller 。

Push via segue

实际上并不起作用,因为它只是将场景 #1 添加到堆栈中,使用户能够“返回”设置。我相信我可以为此隐藏导航栏,但从我收集到的信息来看,我不应该这样做,因为此方法只是将 View 添加到堆栈中,如果用户重复此操作,应用程序最终将耗尽内存并崩溃。

AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; [[delegate.window rootViewController] dismissModalViewControllerAnimated:YES];

这似乎确实清除了所有内容并返回到初始 View ,但与场景的任何交互(例如点击登录或注册按钮)都会导致如下错误:

** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Application tried to present a nil modal view controller on target .'

我非常感谢您为解决此问题提供的任何帮助。我已经在这个问题上呆了几天了,尽可能多地阅读听起来相关的问题,尝试阅读苹果文档(尽管不知道在 UINavigationBarController 引用之外从哪里开始)和谷歌搜索的结果.

我只做了几周的这种类型的编程,所以如果这是一个愚蠢的问题,我很抱歉,我只是无法找到该问题的成功解决方案,这有点目前对我来说是一个障碍。

最佳答案

这个有效:

- (IBAction)pop:(id)sender {

[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:YES];
}

关于objective-c - 如何从应用程序层次结构深处的场景回到开头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12983717/

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