0

我有一个纵向和横向的应用程序。在情节提要中,我有两个视图控制器,它们都使用相同的子类“genericVC”,以及一个作为初始视图控制器的根视图控制器。

当应用程序启动时,rootVC 将实例化两个控制器并根据检测到的方向推送其中一个。我使用下面的方法(rootVC - ViewDidLoad)实例化它们。

    self.landscapeVC = [self.storyboard instantiateViewControllerWithIdentifier:@"iPadLandscapeVC"];
    self.portraitVC = [self.storyboard instantiateViewControllerWithIdentifier:@"iPadPortraitVC"];

我需要的是 self.landscapeVC 和 self.portraitVC 之间的 genericVC 类的共享实例,因此每次旋转设备时我都不需要在它们之间移动数据。

请告诉我怎么做。

谢谢, 卡林

4

2 回答 2

1

那么你想要的是一个可以在应用程序生命周期中随时访问的单例。我不会推荐它,因为它会在整个应用程序生命周期中保留在内存中,并且会消耗您当时可能不会使用的资源。

但是由于您不想在视图控制器实例之间使用属性共享信息,我建议您阅读此内容。

https://developer.apple.com/library/ios/documentation/general/conceptual/DevPedia-CocoaCore/Singleton.html

另一种可能的解决方案是使用通知或委托在视图控制器之间发送字典。

希望这可以帮助

于 2013-10-28T20:29:10.550 回答
1

您需要一个具有两个视图的视图控制器,一个纵向和一个横向。

您可以添加额外的 nib,或者如果您正在使用 StoryBoard,则在 storyBoard 中添加额外的视图控制器,但是给两个 StoryBoard 视图控制器的 nib 相同但 viewController 类。

如果您在创建 StoryBoard 时不小心在纵向和横向之间切换,这会有点痛苦,而且您一次只能访问一个。您必须拖出一个,然后拖入一个才能切换您正在处理的一个

苹果有一个示例应用程序 https://developer.apple.com/library/ios/samplecode/AlternateViews/Introduction/Intro.html#//apple_ref/doc/uid/DTS40008755

于 2013-10-28T15:03:18.803 回答