如何找到推送了哪个 viewController?
Posted
技术标签:
【中文标题】如何找到推送了哪个 viewController?【英文标题】:How do I find which viewController has pushed? 【发布时间】:2020-01-22 14:45:40 【问题描述】:我有简单的导航代码,可以从一个viewController
转换到下一个。
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"myStoryboard" bundle:nil];
UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"myVC"];
UINavigationController *myNavigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
[myNavigationController pushViewController:viewController animated:NO];
这样我收到错误消息:
...正在推送同一个视图控制器实例...不止一次,这是不受支持的,很可能是应用程序中的错误
现在,我了解到在应用程序的某处,相同的 viewController
已(或可以?)被推送,并且需要删除或以其他方式处理该代码行。问题是,我正在从事一个大型项目,但不知道该代码行可能在哪里。
那么,问题是,我该如何处理呢?我可以在pushing
“正确”viewController
之前以编程方式pop
pushed
viewController
吗?或者有什么方法可以找到导致问题的push
?或者我可以通过其他方式解决 Ibn 吗?
【问题讨论】:
【参考方案1】:导航视图控制器是一堆 VC。如果你走堆栈,你可以看到它是什么类型的对象。然后,您可以对类类型名称进行简单的字符串比较。
【讨论】:
谢谢,但是我如何“走堆栈”?你能说得更准确一点吗?以上是关于如何找到推送了哪个 viewController?的主要内容,如果未能解决你的问题,请参考以下文章
单击tableview单元格行时如何推送新的viewcontroller?
如何在 Swift 中获取父 ViewController 的类名?