gpt4 book ai didi

ios - 如何从导航 Controller 中删除 View

转载 作者:技术小花猫 更新时间:2023-10-29 10:42:47 25 4
gpt4 key购买 nike

我想调用一个新的 View Controller 并从导航 Controller 堆栈中删除当前的 View Controller 。例如。我在 View Controller A 中,我调用 B。

现在我在堆栈中有 A , B 。现在我想调用 C(从 B)。我希望堆栈是 A,C。

谢谢。

最佳答案

在 ARC 的上下文中,这是一个可能的解决方案:

NSMutableArray* navArray = [[NSMutableArray alloc] initWithArray:self.navigationController.viewControllers];
[navArray replaceObjectAtIndex:[navArray count]-1 withObject:nextViewController];
[self.navigationController setViewControllers:navArray animated:YES];

如您所知,此代码替换了您尝试从堆栈中删除的 View (您的问题中的“B”)中的常用推送代码。第 1 行将 View Controller 列表从导航 Controller 堆栈复制到 NSMutableArray 中。第 2 行将最后一个(最顶层的) View 替换为我们接下来要转到的 View (“C”)。第 3 行使实际导航 Controller 的堆栈成为我们更改后的数组,并动画化到最顶层项目的过渡。 (当然你不能在根 viewController 中使用这段代码。)

我找到了另一种方法 here并将其改编为 ARC:

UINavigationController *navController = self.navigationController;
[navController popViewControllerAnimated:NO];
[navController pushViewController:someViewController animated:YES];

第一行是必需的,因为一旦您将当前 View 从堆栈中弹出,self.navigationController 将是 nil,第三行将不起作用。行数与前一种方式相同,但这种方式通过内置方法工作,而不是“手动”摆弄堆栈。

关于ios - 如何从导航 Controller 中删除 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8591353/

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