我在故事板中有一个带有分段控件的视图控制器。分段控件从三种不同类型的显示器切换视图。为此,我隐藏/取消隐藏各种视图元素。这很有效,但很难在Xcode storyboard编辑器中进行编辑。我希望能够拥有可以打开和关闭的图层,具体取决于我正在处理的视图部分。
有办法做到这一点吗?还有更好的方法吗?
更新
我倾向于在单独的xib文件中创建三个视图,并根据需要将它们加载到视图控制器视图中。
答案 0 :(得分:2)
您可以在一个Storyboard文件中创建三个不同的ViewControllers,并为每个ViewControllers分配一个Storyboard ID。不要用segue连接它们。然后删除要显示它们的容器视图,并删除自动生成的ViewController。
然后,对我来说,以下代码有效:
-(void)loadSubviewAtIndex:(NSUInteger)idx;
{
[self.subviewController.view removeFromSuperview];
[self.subviewController removeFromParentViewController];
NSString* subviewIdentifier = [self.subviewIdentifiers objectAtIndex:idx];
subviewController = [self.storyboard instantiateViewControllerWithIdentifier:subviewIdentifier];
CGRect frame = self.view.bounds;
subviewController.view.frame = frame;
[self.view addSubview:self.subviewController.view];
[self addChildViewController:self.subviewController];
}
这里我假设您有一个属性subviewIdentifiers
,它是一个NSArray,一个隐含的分段控制索引到Storyboard ID的映射,以及一个IBOutlet UIViewController* subviewController
,它将容器视图链接到。只需从分段控制操作中调用此方法即可。