显示视图控制器并添加 Child 视图控制器导致应用冻结

Present View Controller and Add Child View Controller Cause App Freeze

我有AViewController。在 A 中,我有一个 MapViewController 实例。 MapViewControllerA 的 Child 视图控制器。

现在,当 A 中的按钮得到 TouchUpInside 时,我会初始化一个 BViewController。并出席 B

当初始化 BViewController 时,我将 MapViewController 传递给 B 并作为无主变量存储在 B 中。

我需要为 AB 显示同一张地图。在 BviewDidLoad 中,我将 MapViewController 添加为 Child B 的视图控制器。

当我按下按钮时应用程序冻结。没有异常,没有崩溃,没有错误日志。

有人知道为什么会这样吗?


我的尝试:

  1. 我尝试使用导航控制器并使用 pushViewController 方法,结果相同,应用冻结
  2. 我尝试将 MapViewController 添加为 child inside B at ViewWillAppear,结果相同,应用冻结
  3. 我尝试将 MapViewController 添加为 child inside B at ViewDidAppear,不再冻结,但地图根本不存在。
  4. 我尝试将 B 添加为 A 的 childViewController,而不是现在的 B,结果相同,应用程序冻结
  5. 我在主线程上检查了 运行 上的所有说明。
  6. 我试图在 A 中将 mapViewController 删除为 child 之前出现 B,结果相同,应用程序冻结。
  7. 我尝试在完成块 B 中添加 mapViewController 作为 child,结果相同,应用程序冻结

这可能是一个更好的结构。当您从 A 内容切换到 B 内容时,您可以根据需要移动/调整元素的大小...并且由于它们将是您的 "main" 视图的单独子视图,因此它们可以重叠如果您的界面将从该布局中受益: