您可以在另一个故事板控制器中显示一个情节提要控制器的视图,但这很棘手。我在情节提要中有一个选项卡视图控制器,其中一个视图有一个导航栏,上面有一个分段控件,用于确定控制器中出现两个视图的哪个视图。我将其称为“主要”控制器。我所做的是在主视图内的“主”控制器上,我在导航栏和选项卡栏之间添加了另外两个视图,并将 IBOutlets 连接到它们。
@property (retain, nonatomic) IBOutlet UIView *leftView;
@property (retain, nonatomic) IBOutlet UIView *rightView;
当分段控件的左段被按下时,右视图被隐藏(setHidden:TRUE),左视图被取消隐藏。反之亦然。
为了在上述视图之一中显示来自另一个 ViewController 的视图,在“主要”视图控制器中,我为每个辅助 ViewController 创建了一个 IBOutlet
@property (retain, nonatomic) IBOutlet CustomViewController1 *leftViewController;
@property (retain, nonatomic) IBOutlet CustomViewController2 *rightViewController;
辅助视图控制器的布局必须在导航栏、状态栏和标签栏项目的外观方面与“主”控制器相匹配
然后我不得不在“主”视图控制器上的 ViewDidLoad 中手动从情节提要中实例化它们。
self.leftViewController = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"CustomViewControllerOne"];
self.rightViewController = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"CustomViewControllerTwo"];
其中“CustomViewControllerOne”和“CustomViewControllerTwo”是故事板中控制器的“标识符”字段值,我必须输入。
再次在“主”控制器上的 ViewDidLoad 中,我将控制器视图添加为基于段控件隐藏和取消隐藏的子视图
[self.leftView addSubview:leftViewController.view];
[self.rightView addSubview:rightViewController.view];
我发现如果我尝试将它们添加为主视图的子视图而不创建两个视图容器(leftView 和 rightView),辅助视图控制器会在“主”控制器中出现偏移。
所以当用户按下左段时,来自 CustomViewController1 的视图出现,当他们按下右段时,来自 CustomViewController2 的视图出现。