自定义 segue 使应用程序崩溃 - "Presenting view controllers on detached view controllers is discouraged"
Custom segue crashes app - "Presenting view controllers on detached view controllers is discouraged"
首先,我知道有几十个问题和我的错误信息一样。但是,我的问题的上下文完全不同,所以我无法用以前的 Whosebug 问题解决它。
我创建了一个自定义 Segue,昨天一切正常。
今天,我进一步修改了我的应用程序,突然间我的应用程序不再运行了。
我的应用程序崩溃并显示以下错误消息
Presenting view controllers on detached view controllers is
discouraged - AppName.MainNavigationController: 0x7ff19f054a00.
崩溃点是:sourceViewController.present(destinationViewController, animated: false, completion: nil)
今天修改我的应用程序后,我有以下控制器层次结构
VC: A -> UINAVIGATION CONTROLLER: B - NAVIGATIONCONTROLLER 的根控制器: C -> * WITH THIS CUSTOM SEGUE * VC: D
-> : 代表一个segue。这个segue是从C做的,导航控制器的根控制器
这真的很奇怪,因为一切正常,但现在我遇到了崩溃。
这是我自定义转场的执行方法:
override func perform() {
//.... custom segue animation......
//.....
UIView.animate(withDuration: DURATION, animations: {
// Some more animations
self.bubble.transform = CGAffineTransform.identity
destinationView?.transform = CGAffineTransform.identity
destinationView?.alpha = 1
destinationView?.center = sourceCenter!
destinationView?.layer.cornerRadius = 1
}, completion: { (_) in
self.bubble.isHidden = true
destinationView?.clipsToBounds = defaultClipsToBoundsSettings!
//finally showing it
DispatchQueue.main.async
{
//********* THIS IS THE CRASH POINT
sourceViewController.present(destinationViewController, animated: false, completion: nil)
}
})
}
这里我从我的按钮操作方法执行 segue:
castedRootController.performSegue(withIdentifier: "ViewShare", sender: nil)
segue 应该在 VC A 和 navigationController B 之间,因为 VC C 被认为是导航的根 VC,也在 segue 期间 VC A 没有显示 navigationController
首先,我知道有几十个问题和我的错误信息一样。但是,我的问题的上下文完全不同,所以我无法用以前的 Whosebug 问题解决它。
我创建了一个自定义 Segue,昨天一切正常。 今天,我进一步修改了我的应用程序,突然间我的应用程序不再运行了。
我的应用程序崩溃并显示以下错误消息
Presenting view controllers on detached view controllers is discouraged - AppName.MainNavigationController: 0x7ff19f054a00.
崩溃点是:sourceViewController.present(destinationViewController, animated: false, completion: nil)
今天修改我的应用程序后,我有以下控制器层次结构
VC: A -> UINAVIGATION CONTROLLER: B - NAVIGATIONCONTROLLER 的根控制器: C -> * WITH THIS CUSTOM SEGUE * VC: D
-> : 代表一个segue。这个segue是从C做的,导航控制器的根控制器
这真的很奇怪,因为一切正常,但现在我遇到了崩溃。
这是我自定义转场的执行方法:
override func perform() {
//.... custom segue animation......
//.....
UIView.animate(withDuration: DURATION, animations: {
// Some more animations
self.bubble.transform = CGAffineTransform.identity
destinationView?.transform = CGAffineTransform.identity
destinationView?.alpha = 1
destinationView?.center = sourceCenter!
destinationView?.layer.cornerRadius = 1
}, completion: { (_) in
self.bubble.isHidden = true
destinationView?.clipsToBounds = defaultClipsToBoundsSettings!
//finally showing it
DispatchQueue.main.async
{
//********* THIS IS THE CRASH POINT
sourceViewController.present(destinationViewController, animated: false, completion: nil)
}
})
}
这里我从我的按钮操作方法执行 segue:
castedRootController.performSegue(withIdentifier: "ViewShare", sender: nil)
segue 应该在 VC A 和 navigationController B 之间,因为 VC C 被认为是导航的根 VC,也在 segue 期间 VC A 没有显示 navigationController