繁体   English   中英

Swift 4-带标签栏和导航控制器的3D Touch快速动作

[英]Swift 4 - 3D Touch Quick Actions With Tab Bar & Navigation Controller

我正在尝试从主屏幕添加3D Touch快速操作,并且正在使用以下代码:

        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let tabVC = storyboard.instantiateViewController(withIdentifier: "TabVC") as! UITabBarController
        let mainVC = storyboard.instantiateViewController(withIdentifier: "NavMoreVC") as! UINavigationController
        let foodVC = storyboard.instantiateViewController(withIdentifier: "FoodVC") as! FoodTableViewController
        window?.rootViewController = tabVC
        self.window?.makeKeyAndVisible()
        mainVC.pushViewController(foodVC, animated: true)

用户点击快捷方式后,我试图导航到“查找食物”视图控制器,但是上面的代码在控制台中给我一个错误:

Unbalanced calls to begin/end appearance transitions for <UITabBarController: 0x10e022600>.

应用程序是否可以在保持标签栏和导航控制器的同时推送到“查找食物”视图控制器。 谢谢!!

导航结构

首先,将rootVC作为选项卡,然后导航应从其内部进行

因此,将tabBarControllber子类化,然后在viewDidAppear中,根据导航bool或应用内共享的逻辑进行推送

    let foodVC = storyboard.instantiateViewController(withIdentifier: "FoodVC") as! BusStatusTableViewController
    // here do segue to food VC

进行了更多挖掘,找到了解决方案。 我在AppDelegate中使用了以下代码:

    let myTabBar = self.window?.rootViewController as? UITabBarController
    myTabBar?.selectedIndex = 0
    let nvc = myTabBar?.selectedViewController as? UINavigationController
    let vc = nvc?.viewControllers.first as? MoreViewController
    nvc?.popToRootViewController(animated: false)
    return vc!.openPageFor(shortcutIdentifier: shortcutIdentifier)

然后在我的MoreViewController中,我有一个函数,该函数将根据shortcutIdentifier调用不同的segue。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM