在此应用程序中,用户可以执行活动A或B.执行A时,查看者会看到嵌入的视图A;但是在A期间,观众可以选择查看嵌入的视图B.(活动B也是如此,只有相反的视图。)
我在IB中的设置如下图所示。不知道有什么更好的方法,我创建了两倍于我喜欢的活动场景:对于“Do Activity A”分支,我有两个并排的活动A场景副本。第一个有一个嵌入视图A的嵌入;第二个是嵌入视图B的嵌入。(“B”设置是相反的。)
为了避免更多重复,我确实让两个活动分支共享视图A和B.尽管活动场景加倍,但它们链接到的类(ActivityAViewController和ActivityBViewController)却没有。我还没有发现任何并发症。 。 。
与我见过的其他变通方法相比,我选择了上面的“push-pop”布局,因为视图A和B都很昂贵。我不想丢弃主视图只是为了加载辅助,我不想不必要地加载它们。此外,我想在IB中这样做,因为真正的应用程序更复杂,看到我的所有布局有助于我理解和开发它。话虽如此,我的方法似乎仍然存在。
我的问题是
答案 0 :(得分:1)
有没有更好的方法在IB中设置它?
还有其他方法可以设置它。他们都有权衡。你的方法有一定的外观,如果你想以不同的方式连接它,它会看起来有点不同。您的方法还具有以下优点:所有导航都由Storyboard处理;不需要额外的代码。
替代方案包括在自己的小导航控制器中嵌入视图A和B.然后切换到查看另一个将涉及单击该navigationController。这避免了外部Activity A和B控制器的重复,但它会通过向嵌入式视图添加navigationBar来改变外观。
您也可以这样做并隐藏导航栏并从外部活动A或B控制器传递消息,告诉它何时推送另一个viewController。这具有一些额外的非平凡编码的缺点;故事板不再为您管理导航。
您也可以在UITabBarController中运行它。如果您只需要一个活动A和活动B,那么它的缺点是同时创建活动A和活动B,但您可以在它们之间自由切换而无需重新创建任何视图。
活动场景会发生什么?共享视图控制器?是一个 为每个创建单独的类实例,或者最终完成两个场景 共享同一个实例?
每个segue(包括嵌入的segues)都会创建一个新的viewController实例。没有实例共享。
同样,共享视图会发生什么?
每次都会创建A和B的新实例。