gpt4 book ai didi

ios - 在导航 Controller 中的 View 之间跳转

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:22:45 25 4
gpt4 key购买 nike

我需要在 View Controller 之间跳转。例如:

View1: First screen (Just logo)
View2: Download Screen
View3: First app screen (Some Buttons)
View4-View(N): some app screens

当用户进入应用时,应用会转到 View1->View2(下载内容)->View 3->View4->View5然后用户希望转到第一个应用程序屏幕(View3),他这样做:

NSArray *array = [self.navigationController viewControllers];
[self.navigationController popToViewController:[array objectAtIndex:2] animated:NO];

用户第一次进入应用程序时:View1->View3(不再需要下载屏幕),我有不同的推送转场去 View3 所以我们假设用户去:View1->View 3->View4->View5,现在他想回到View3,所以函数:

NSArray *array = [self.navigationController viewControllers];
[self.navigationController popToViewController:[array objectAtIndex:2] animated:NO];

将他返回到 View4,这是错误的。我该如何解决?

最佳答案

好吧,如果你正在使用 Storyboard,你可以做的是设置你的 uiviewcontrollers 的 Storyboard ID 并使用它来弹出和推送你的 View 。

enter image description here

假设您的 Storyboard名称是 MainStoryboard.storyboard

UIStoryboard*  sb = [UIStoryboard storyboardWithName:@"MainStoryboard"
bundle:nil];
SettingsListViewController *settingsVC = [sb instantiateViewControllerWithIdentifier:@"SettingsListViewController"]; // @"SettingsListViewController" is the string you have set in above picture
[self.navigationController popToViewController:settingsVC animated:YES];

上面的解决方案应该适合你,但如果我是你,我会改变我的应用程序的结构,你说:

View1: First screen (Just logo)
View2: Download Screen

由于 View1 只是 Logo ,而 View 2 也是您跳过的 View ,因此您可以将它们从导航 Controller 中删除,并使 View3 成为导航 Controller 的 root view controller 并且当您需要 view1 和 view2 将它们呈现为模态视图 Controller ,

当你完成它们后,让我们说;用户成功加载应用程序关闭 Logo 屏幕并显示下载屏幕 如果下载成功则关闭它。

因此您的 View3 将作为 Root View Controller 存在,假设您在 View(n) 中想要转到主屏幕,即 View3,您需要做的就是调用

[self.navigationController popToRootViewControllerAnimated:NO];

当你在 view(n) 并且想要弹出到 view(n-1) 时,只需使用

[self.navigationController popViewControllerAnimated:YES];

祝你好运

关于ios - 在导航 Controller 中的 View 之间跳转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15005736/

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