截图:


我得到了很多这样的崩溃,但问题是,我只是被指到我的appDelegate第一线。我不知道在哪里找这个问题。有什么想法可以让我从下面的坠机报告开始调查吗?
Crashed: com.apple.main-thread
0 UIKit 0x18d005640 __56-
[UIPresentationController runTransitionForCurrentState]_block_invoke + 460
1 UIKit 0x18cf27aa8 _runAfterCACommitDeferredBlocks + 292
2 UIKit 0x18cf1ae5c _cleanUpAfterCAFlushAndRunDeferredBlocks + 288
3 UIKit 0x18ccac464 _afterCACommitHandler + 132
4 CoreFoundation 0x1836a6cdc __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 32
5 CoreFoundation 0x1836a4694 __CFRunLoopDoObservers + 412
6 CoreFoundation 0x1836a4c50 __CFRunLoopRun + 1292
7 CoreFoundation 0x1835c4c58 CFRunLoopRunSpecific + 436
8 GraphicsServices 0x185470f84 GSEventRunModal + 100
9 UIKit 0x18cd1d5c4 UIApplicationMain + 236
10 AppName 0x100ae3ca4 main (AppDelegate.swift:23)
11 libdyld.dylib 0x1830e456c start + 4更新:
依据如下:
App crashing on runTransitionForCurrentState but no clue as to why
我正在寻找潜在的原因,并对下面的代码感到好奇。
在进行同步过程时,我有以下功能,用于显示带有活动指示符的视图。
public func displayActivityAlertWithCompletion(_ title: String, ViewController: UIViewController, completionHandler: @escaping ()->())
{
let pending = UIAlertController(title: "\n\n\n"+title, message: nil, preferredStyle: .alert)
//create an activity indicator
let indicator = UIActivityIndicatorView(frame: pending.view.bounds)
indicator.autoresizingMask = [.flexibleWidth, .flexibleHeight]
indicator.color = UIColor(rgba: Palette.loadingColour)
//add the activity indicator as a subview of the alert controller's view
pending.view.addSubview(indicator)
indicator.isUserInteractionEnabled = false
// required otherwise if there buttons in the UIAlertController you will not be able to press them
indicator.startAnimating()
ViewController.present(pending, animated: true, completion: completionHandler)
}然后,我像这样使用这个功能:
displayActivityAlertWithCompletion("Pushing Data", ViewController: self){_ in
Helper_class.doSync(_cleanSync: false){
//sync is complete
Prefs.is_Syncing = false
DispatchQueue.main.async {
//dismiss my view with activity alert
self.dismiss(animated: true){
//dismiss my viewcontroller
Toast(text: "Upload sync completed").show()
self.dismiss(animated: true, completion: nil)
}
}
}
}这会不会成为UIKit问题的潜在原因?
发布于 2018-02-13 10:57:58
按照以下步骤,您可以完成以下操作: 1.打开导航器;2.切换到BreakPoint导航器;3.单击左下角的"+“按钮;4.弹出时,单击"Exception BreakPoint”。
然后再运行您的项目,它将在确切的点崩溃。
发布于 2018-02-13 11:08:34
以下是我的建议:
UIViewController函数上放置断点-- viewDidLoad、viewWillAppear、viewWillDisappear等。

根据您的代码,您要删除同一viewController两次。将pending作为全局变量。并将其视为:
pending.dismiss(animated: true, completion: nil)
DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(0.1)) {
self.dismiss(animated: true, completion: nil) // This will be called after above time gap.
}发布于 2018-02-13 11:50:28
在某一年进行某些迁移时,UIPresentationController构造函数中的崩溃引起了问题。
对我来说,这个问题是通过将presenting改为UIViewControllerTransitioningDelegate中的source来解决的。
比如:
public func presentationController(forPresented presented: UIViewController, presenting: UIViewController?, source: UIViewController) -> UIPresentationController? {
return PresentationController(presentedViewController: presented, presenting: source)
}虽然它一直都是可以复制的,所以也许不是同一个问题。
https://stackoverflow.com/questions/48764872
复制相似问题