【问题标题】:Using a View Controller managing two other View Controllers使用一个视图控制器管理另外两个视图控制器
【发布时间】:2023-03-12 02:00:01
【问题描述】:

我的应用程序有一个offlineMapVC 和一个onlineMapVC,以支持在线地图(使用 MapKit 和 Google 地图)和离线地图(使用 Route-Me)。

我创建了自己的mapVC 来管理这些mapVC 的切换,并能够将视图控制器用作一个单独的视图控制器。好吧,我已经通过创建新的 mapVC 女巫的 offlineMapVC 和 onlineMapVC 实例变量来做到这一点,我现在在我的整个应用程序中都使用它。

首先,所有事情似乎都有效,但是。然而,在较长时间使用这种方法时,由于在层次结构中使用视图控制器,我遇到了一些问题。 I read this is the wrong way to go. 管理两个视图控制器之间切换的正确方法是什么?我的问题看起来很简单,但我找不到合适的解决方案。

【问题讨论】:

  • 我通过使用addChildViewController: 方法定义视图控制器层次结构解决了这个问题。

标签: ios uikit mapkit route-me


【解决方案1】:

我自己把视图控制器放在视图控制器中,我见过比我更好的程序员做同样的事情。 (参见 Rob Napier “iOS 5 Programming - Pushing the Limits”。他经常提到它。)只要您没有多个视图控制器直接控制相同的视图和子视图,您应该可以接受。

自从 Jonah Williams 写了那篇文章后,我认为 iOS 5 正式将视图控制器层次结构与自定义内容视图控制器一起使用。您可能会认为您的 mapVC 是自定义内容视图控制器,并将 onlineMapVC 和 offlineMapVC 实现为子视图控制器。

(Apple 文档链接往往会经常更改,因此请在 Google 上搜索文档的“自定义内容视图控制器”。)

如果您可以通过“在两个视图控制器之间切换”为您的意思提供更多上下文,这将有助于回答您的问题。通常,我同时有多个视图控制器处于活动状态。我不会在它们之间切换。 (我在同一个应用程序中使用导航和标签栏控制器,但我假设您知道它们是如何工作的并且您提出了不同的问题。只是不清楚您的案例中的细节是什么。)

【讨论】:

  • 感谢您的快速回复,我确实通过在 mapVC 的视图中添加和删除 onlineMapVC 和 offlineMapVC 的视图来在视图控制器之间切换。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-18
  • 1970-01-01
相关资源
最近更新 更多