gpt4 book ai didi

ios - Swift ios 从任何地方展开到根 ViewController 选项卡

转载 作者:行者123 更新时间:2023-11-30 12:55:05 26 4
gpt4 key购买 nike

我有一个基于选项卡的应用程序。我想知道是否可以将用户从任何地方展开到当前选项卡的根目录。

我的应用程序是这样构建的:TabController -> (tabs) -> navigationController -> vc 等..

假设我按下应用程序中的选项卡 4。现在,我深入研究了两个 View Controller ,最终得到了一个模态呈现的 VC。现在我想直接返回到选项卡的根目录:

选项卡4 -> navigationController -> rootVC -> pushVC -> pushVC -> modalVc

所以我例如从modalVcrootVC

我知道我可以做类似 this 的事情,但我想从 tab4 中的任何 VC 转到 rootVC,并且使用该技术将迫使我在选项卡 4 中的所有子 VC 上创建展开转场

我正在使用通知,当用户按下通知时,我想将用户从任何地方带到 rootVC。​​

并使用类似的东西:

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let destinationViewController = storyboard.instantiateViewController(withIdentifier: "accountVc") as? AccountViewController
navInTab.pushViewController(destinationViewController!, animated: false)

不适用于例如:vc -> vc -> modalVc

因为它会弄乱导航堆栈

最佳答案

您可以弹出到导航堆栈的根,或弹出到堆栈中的第 n 个元素,或用不同的堆栈替换 View Controller 堆栈。

您可以在 navigationController 上使用 popToRootViewController 返回到导航堆栈的根目录。或者假设您想返回到堆栈中的第一个 VC,您会执行类似的操作

let controllerStack = self.navigationController?.viewControllers
_ = self.navigationController?.popToViewController((controllerStack?[0])!, animated: true)

或者您可以用新的 Controller 堆栈替换 View Controller 的导航堆栈,即

NSMutableArray *controllerStack = [NSMutableArray arrayWithArray:navigationController.viewControllers];
// Replace the source controller with the destination controller, wherever the source may be
[controllerStack replaceObjectAtIndex:[controllerStack indexOfObject:sourceViewController] withObject:destinationController];

// Assign the updated stack with animation
[navigationController setViewControllers:controllerStack animated:YES];

关于ios - Swift ios 从任何地方展开到根 ViewController 选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40515850/

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