我的故事板中的视图控制器仅具有mapview。
class MapVC: UIViewController {
class func viewController () -> MapVC {
let storyboard = UIStoryboard(name: "Dashboard", bundle: nil)
return storyboard.instantiateViewController(withIdentifier: "MapVC") as! MapVC
}
override func viewDidLoad() {
super.viewDidLoad()
}
}
我有简单的登录屏幕
在“登录”按钮上的操作我称为此方法
private func addChildVC (_ vc:UIViewController) {
self.removeAllChild()
self.addChild(vc)
vc.view.frame = self.view.bounds
self.view.addSubview(vc.view)
vc.didMove(toParent: self)
self.currentCenterViewController = vc
}
使用
MapVC.viewController()
应用崩溃
vc.view.frame = self.view.bounds
奇怪的是,如果我正在调试,例如附加了调试器,并且按登录应用程序时没有崩溃,但是当调试器没有在启动时附加时,然后我在模拟器中启动应用程序,然后附加了进程,并且按了登录按钮,应用程序崩溃了
当前视图控制器也无法正常工作,导致应用崩溃
如果我从情节提要应用中删除Mapview在两种情况下都可以正常运行
当我检查vc.isViewLoaded
返回false
时
尝试loadViewIfRequired() 清除派生数据,清除项目重新启动xcode。 确认我添加了正确的标识符
我无法理解原因,请帮助
编辑
示例应用
https://drive.google.com/open?id=1-otaZhhhDEH4p29CgQP7xZSX9tizceq8
复制步骤
1)在ios 12的任何模拟器中运行
2)从xcode按停止键
3)从模拟器启动应用程序
4)按下按钮
EDIT2
发布视频https://drive.google.com/file/d/1z9C3Re_oVYkRncnE22xRoef2Kv2WyzId/view
答案 0 :(得分:2)
我不知道实际上是什么问题以及为什么您的应用程序崩溃。但是我找到了解决方案。 在使用库链接二进制文件中添加 MapKit.framework 将解决您的问题。
我希望这会对您有所帮助。
答案 1 :(得分:1)
我已经找到了背后的真正原因。
这是因为视图调试器框架
这是苹果开发团队的回复
工程部提供了有关此问题的以下信息:
提供的示例项目配置不正确。
该应用程序正在使用MapKit框架,但尚未配置为与MapKit链接。使用调试器运行时,MapKit会被拉入,因为它由视图调试器框架链接。
从模拟器启动应用程序时,如果没有视图调试器,则MapKit将不会加载到运行时中,因为该应用程序未将其指定为依赖项,因此崩溃。
更新示例项目以链接MapKit解决了应用程序崩溃的问题。