gpt4 book ai didi

objective-c - 如何将 View 推送到导航堆栈并删除当前 View ?

转载 作者:搜寻专家 更新时间:2023-10-30 19:53:21 24 4
gpt4 key购买 nike

我想将一个 View 插入导航 Controller 堆栈,但删除当前 View ,这样当用户按下下一个 View 时,它不会将他们带到上一个 View 。

一个方向的流可以是以下之一:

View X -> View 1 -> View 2 -> View 3    
View X -> View 1 -> View 3

但是反方向的流动总是这样的:

View X <- View 1      <-      View 3

问题是我想在 View 2 Controller 上处理它,在 View 3 上执行它很容易覆盖后退按钮操作。 View 3 可以有很多不同的 View ,我不想覆盖所有 View 的后退按钮并检查堆栈的前一个 Controller 是否是 View 2 Controller 。它们都具有相同的父类,因此我无法仅覆盖“View 3 类” Controller 的后退按钮。

我试过这个,所以 View 2 的 Controller 没有添加到导航堆栈中:

//Pop controller from stack before pushing
[self.navigationController popViewControllerAnimated:YES];
[self.navigationController pushViewController:controller animated:YES];

但是一旦你弹出它就会删除 View 并且不会推送到下一个 Controller

结果相同的其他选项

NSMutableArray *viewControllers = [NSMutableArray arrayWithArray: self.navigationController.viewControllers];
[viewControllers removeObjectIdenticalTo:self];
self.navigationController.viewControllers = viewControllers;
[self.navigationController pushViewController:controller animated:YES];

最佳答案

关于你最后一个没有推送的例子,这行得通吗?

NSMutableArray *viewControllers = [NSMutableArray arrayWithArray: self.navigationController.viewControllers];
[viewControllers removeObjectIdenticalTo:self];
[viewControllers addObject:controller];
[self.navigationController setViewControllers: viewControllers animated: YES];

由于您在没有自己的情况下将 Controller 设置为一组 Controller ,您可能会将 navigationController 属性设置为 nil,从而使您无法在之后立即推送新 Controller .无论如何,尝试一下并没有坏处。

关于objective-c - 如何将 View 推送到导航堆栈并删除当前 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14408464/

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