繁体   English   中英

如何优雅地从一个嵌入式视图导航到另一个视图(在IB中使用布局)?

[英]How can I elegantly navigate from one embedded view to another (with layout in IB)?

用户可以在该应用程序中执行“活动A”或“活动B”。 而且在A期间,查看者可以选择查看嵌入的ViewB。(Activity B也是如此,只适用于相反的视图。)

我在IB中的设置如下图所示。 不知道有什么更好的方法,我创建了两倍于我想要的活动场景:对于“执行活动A”分支,我有两个并排的活动A场景副本。 第一个嵌入到视图A的序列中; 第二个是嵌入到视图B的序列。(“ B”设置是相反的。)

为避免重复,我确实使两个活动分支都共享视图A和B。尽管活动场景增加了一倍,但它们链接到的类(ActivityAViewController和ActivityBViewController)却没有。 我还没有注意到任何复杂的情况。

与我所看到的其他解决方法相比,我选择了上面的“推送”布局,因为视图A和B都很昂贵。 我不想仅仅为了加载次要视图而放弃主要视图,也不想不必要地加载两个视图。 另外,我想在IB中执行此操作,因为真正的应用程序更复杂,并且看到那里的所有布局都有助于我理解和开发它。 话虽如此,我的方法仍然显得愚蠢。

我的问题是

  1. 是否有更好的方法在IB中进行设置?
  2. 活动场景的共享视图控制器会发生什么? 是为每个实例创建一个单独的类实例,还是两个场景最终共享同一实例?
  3. 同样,共享视图会怎样?

苹果的解释似乎很清楚,尽管他们认为我比现在更了解Cocoa Touch和相关术语。 任何澄清和见解将不胜感激。

具有嵌入式视图的导航情节提要

是否有更好的方法在IB中进行设置?

还有其他设置方法。 他们都有权衡。 您的方法具有一定的外观,如果您想以不同的方式进行连接,则外观会有所不同。 您的方法还具有以下优点:所有导航都由情节提要进行处理; 不需要额外的代码。

备选方案包括将视图A和B嵌入其自己的小导航控制器中。 然后切换到另一个视图将涉及单击该navigationController。 这避免了外部Activity A和B控制器的重复,但是它将通过向嵌入式视图添加navigationBar来更改外观。

您也可以这样做,并隐藏导航栏,并从外部Activity A或B控制器传递一条消息,以告知何时按下另一个viewController。 这具有一些额外的非平凡编码的缺点。 情节提要不再为您管理导航。

您也可以在UITabBarController中运行它。 如果只需要一个,则具有同时创建活动A和活动B的缺点,但是您可以在它们之间自由切换而无需重新创建任何视图。

活动场景的共享视图控制器会发生什么? 是为每个实例创建一个单独的类实例,还是两个场景最终共享同一实例?

每个序列(包括嵌入式序列)都会创建一个新的viewController实例。 没有实例共享。

同样,共享视图会怎样?

每次都会创建一个新的A和B实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM