Dependency injection tabbar控制器路由

Dependency injection tabbar控制器路由,dependency-injection,uitabbarcontroller,router,swift5,Dependency Injection,Uitabbarcontroller,Router,Swift5,我通过依赖注入实现了这一点,包括第二部分,但现在没有使用deeplink 一切正常,但我有一个问题,当标签更改程序。我创建了一个包含下一个函数的tabRouter,因此任何将此路由器作为路由的viewModel都可以调用它 func changeTab(to tab: Tabs) { root?.tabBarController.selectedIndex = tab.rawValue } 这段代码正确地更改了选项卡,但如果我尝试从那里呈现一个新视图,路由器系统将保留最后一个视图作为

我通过依赖注入实现了这一点,包括第二部分,但现在没有使用deeplink

一切正常,但我有一个问题,当标签更改程序。我创建了一个包含下一个函数的tabRouter,因此任何将此路由器作为路由的viewModel都可以调用它

func changeTab(to tab: Tabs) { 
    root?.tabBarController.selectedIndex = tab.rawValue
}
这段代码正确地更改了选项卡,但如果我尝试从那里呈现一个新视图,路由器系统将保留最后一个视图作为参考

示例:我有三个选项卡,主页、购物车和设置。用户正在查看CartTab中的产品列表并按下一个按钮进行支付,用户没有添加任何支付方式,因此我们通过编程方式切换到设置选项卡,从这里我们假设显示PaymentView,但是即使设置选项卡打开,路由器系统仍将CartTab作为当前参考,因此,PaymentView是从CartTab显示的,即使用户现在正在观察设置Stab

如果用户返回CartTab,可见视图将是PaymentView

为什么您认为路由器系统没有取消分配或更改为显示的新选项卡

或者你能给我推荐一个更好的路由解决方案吗

提前感谢您的帮助