为什么DetailViewController使用Tabbar和Navigation Controller弹出到第一个DetailViewController?

时间:2019-05-02 11:32:07

标签: ios swift uinavigationcontroller uitabbarcontroller

Green arrow button click action pass data to <code>MyCartVC</code>, Page goes like Red arrows way. I want to go with Blue arrows way.首先,我使用情节提要。我的ViewController层次结构像这样NavigationController -> SplashScreen -> LoginScreen -> MainTabBarController -> MainNavigationController -> MainViewController -> DetailViewController

当我单击DetailViewController页面上的按钮时,不会返回到MainViewController。它将转到LoginScreen

我在addToBasket的{​​{1}}操作中尝试了此代码。

DetailViewController

这是我的@IBAction func addBasket(_ sender: Any) { SingletonCart.sharedFood.food.append(food!) let mainView = self.storyboard?.instantiateViewController(withIdentifier: "FoodOrder") as! MainViewController let appDelegate = UIApplication.shared.delegate as! AppDelegate self.navigationController?.popViewController(animated: true) dismiss(animated: true) } 代码,用于将loginButton作为rootViewController。

MyTabBarController

2 个答案:

答案 0 :(得分:0)

@IBAction func addBasket(_ sender: Any) {

        SingletonCart.sharedFood.food.append(food!)
        self.navigationController?.popViewController(animated: true)

    }

答案 1 :(得分:0)

在您的方法中,RootViewController是“登录”屏幕的导航控制器,因此会发生此问题。

您的方法应如下:

A)NavigationController-> SplashScreen-> LoginScreen

B)MainTabBarController-> MainNavigationController-> MainViewController-> DetailViewController

用户登录后,应将B.MainTabBarController替换为window.rootViewController