gpt4 book ai didi

ios - 弹出和关闭 View Controller 的通用方法

转载 作者:行者123 更新时间:2023-11-28 20:05:33 26 4
gpt4 key购买 nike

我正在构建一个应用程序,其中有 3 个 ViewController。我还创建了自定义导航 Controller 。

  1. A-ViewController -> 这包含 2 个按钮,第一个按钮用于打开 B-ViewController,第二个按钮用于 C-ViewController。从第一个按钮开始,我将 pushviewcontroller 用于 B-ViewController,这意味着 B-ViewController 是从 A-ViewController 推送的。

从第二个按钮开始,C-ViewController 使用 presentviewcontroller 呈现。

现在在 B 和 C ViewController 中按下后退按钮时,我必须在 B-ViewController 中使用弹出 View Controller 并在 C-ViewController 中关闭。

目前我知道这些页面,但应该有一个通用的解决方案。有什么方法可以识别当前导航 Controller 是被推送还是弹出。

因为有些页面可以推送或呈现,但我不想设置任何 bool 变量。我需要使用苹果的支持。

NSArray *arrViewControllers = [[AppDelegate sharedInstance].navigationController   viewControllers];
NSLog(@"[arrViewControllers count] = %d",[arrViewControllers count]);

我正在使用上面的代码来获取堆栈中的 View Controller 列表。但我无法确定它是被推送还是被呈现。有人可以帮助我吗?

最佳答案

您可以检查您的 View Controller 是否存在于导航 View Controller 的堆栈中。只需将其检查为

if([self.navigationController topViewController] == self){
//VC is the top most view controller
[self.navigationController popViewControllerAnimated:YES];
}else{
//You can put some checks here to be dead sure its a modally presented view controller
[self dismissViewControllerAnimated:YES completion:nil];
}

关于ios - 弹出和关闭 View Controller 的通用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22215864/

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