Swift - 摇动手势关闭 child 视图控制器

Swift - Shake gesture dismisses the child view controller

我有两个视图控制器,它们在故事板中定义为,

UIViewController -> (Show Detail Segue) -> UITabBarController

我的问题是;我正在使用一个名为 netfox 的库来调试我的 HTTP 请求。这个图书馆的 UIShake Gesture 触发。但是当我第一次在模拟器上使用UITabBarController Shake Gesture 时不起作用。第二次它关闭当前在屏幕上的 ViewController,显然是 UITabBarController 的 child,并返回到初始的 UIViewController。这就像用 modal segue 连接两个 ViewController 并从 child 调用 self.dismiss() 一样。

我试图通过

更改 UIApplicationrootViewController
UIApplication.shared.keyWindow.rootViewController = self 

UITabBarControllerviewDidLoad() 方法中,它起作用了。但是,对于此解决方案,任何 UINavigationControllerUINavigationBar 中的项目(按钮、标题)都丢失了 UITabBarController 的 child。

我不知道为什么会这样。如果有人在我解决这个问题时帮助我,我将不胜感激。

而不是使用

self.performSegue(withIdentifier:_)

UIViewController 中调用此方法有效:

let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let viewController = mainStoryboard.instantiateViewControllerWithIdentifier("tabBarcontroller") as UITabBarController  
UIApplication.sharedApplication().keyWindow?.rootViewController = viewController;

尊重这个answer