添加子控制器或演示时,故事板中 Mapview 上的奇怪情况崩溃(添加了示例代码)

Pra*_*iya 0 mapkit ios swift

我在故事板中有视图控制器,只有地图视图。

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()

    }
}
Run Code Online (Sandbox Code Playgroud)

我有简单的登录屏幕

在登录按钮操作时,我调用此方法

 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

  }
Run Code Online (Sandbox Code Playgroud)

MapVC.viewController()
Run Code Online (Sandbox Code Playgroud)

应用程序崩溃

vc.view.frame = self.view.bounds
Run Code Online (Sandbox Code Playgroud)

奇怪的是,如果我像附加调试器一样调试,当我按下登录应用程序时没有崩溃,但是当调试器未在启动时附加,然后我在模拟器中启动应用程序然后附加进程,当我按下登录按钮时应用程序崩溃

当前视图控制器也无法正常工作导致应用程序崩溃

如果我从故事板应用程序中删除 Mapview 在这两种情况下都可以正常工作

当我检查vc.isViewLoaded返回时false

试过 loadViewIfRequired() 清理派生数据,清理项目重启 xcode。验证我是否添加了正确的标识符

在此处输入图片说明

我无法理解原因 请帮助

编辑

示例应用程序

https://drive.google.com/open?id=1-otaZhhhDEH4p29CgQP7xZSX9tizceq8

重现步骤

1) 在 ios 12 的任何模拟器中运行
2) 从 xcode 按下停止
3) 从模拟器启动应用程序
4) 按下按钮

编辑2

问题视频https://drive.google.com/file/d/1z9C3Re_oVYkRncnE22xRoef2Kv2WyzId/view

提交错误https://bugreport.apple.com/web/?problemID=46774084

在此处输入图片说明

Sag*_*han 6

我不知道实际问题是什么以及您的应用程序崩溃的原因。但我找到了解决方案。在Link Binary With Libraries 中添加MapKit.framework将解决您的问题。

我希望这能帮到您。

  • 仍然有问题为什么在附加调试器时它可以工作? (2认同)