故事板中视图控制器之间的共享实例

时间:2013-10-28 14:32:07

标签: ios iphone objective-c

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

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

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

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

请告诉我怎么做。

谢谢, 克林

2 个答案:

答案 0 :(得分:1)

您希望一个视图控制器具有两个视图,一个纵向和一个横向。

您可以添加额外的笔尖,或者如果您使用的是StoryBoard,请在storyBoard中添加额外的视图控制器,但同时为两个StoryBoard视图控制器笔尖提供相同的视图控制器类。

如果你在创建它时不小心在纵向和横向之间切换它会破坏事物,那么在StoryBoard中会有点痛苦,你一次只能访问一个。你必须拖出一个,然后一个来切换你正在使用的那个

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

答案 1 :(得分:1)

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

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

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

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

希望这有帮助