使用Storyboard在同一容器视图中的多个视图

时间:2014-11-17 07:00:35

标签: ios objective-c iphone xcode storyboard

我有一个带有背景图片和标题标题的viewcontroller。这种观点在大多数时候都是一样的。我有不同的子视图,我将在这个viewcontroller中显示和隐藏。

我如何使用故事板实现这一目标?

  1. 我是否必须为每个子视图创建单独的xib?
  2. 或者我是否在同一个视图控制器中创建单独的视图并隐藏并根据需要显示它们?
  3. 或者还有其他优雅的解决方案吗?

    感谢。

5 个答案:

答案 0 :(得分:7)

请查看本教程:How to use a 'Container View' in iOS?

整体构思如图所示。

enter image description here

答案 1 :(得分:2)

如果使用container views.

,设计用户界面会非常容易

为您的所有子视图添加container view。 为您的主properties中的所有子container views创建View Controller。 在容器view controller中设计子视图。 在主view controlle r中应用业务逻辑以相应地显示和隐藏子视图。

答案 2 :(得分:1)

通常,您不需要为每个子视图创建单独的xib(从技术上讲,我们可以在同一个故事板上绘制所有视图控制器)。

使用隐藏和显示问题,将子视图设为IBOutlet,然后让您的代码决定应显示哪个视图以及应隐藏哪个视图。

答案 3 :(得分:1)

添加和删除子视图而不是隐藏和显示会更好。

在同一个ViewController中,您可以使用addSubView:添加removeFromSuperView来删除视图

答案 4 :(得分:0)

添加和删除子视图是实现此目的的最佳方式。但如果你使用故事板进行此操作,所有重叠的视图可能看起来很混乱并且很难管理。

实现此目标的最佳方法是以编程方式添加视图,并以编程方式设置布局约束。

UIView *subView = [[UIView alloc]init];
subView.backgroundColor = [UIColor blackColor];
NSDictionary *viewsDictionary = @{@"subView":subView};

NSDictionary *metrics = @{@"offset":@20};

NSArray *heightConstraint = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-offset-[subView]-offset-|"
                                                                    options:0
                                                                    metrics:metrics
                                                                      views:viewsDictionary];

NSArray *widthConstraint = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-offset-[subView]-offset-|"
                                                                   options:0
                                                                   metrics:metrics
                                                                     views:viewsDictionary];
[self.view addConstraints:heightConstraint];
[self.view addConstraints:widthConstraint];

上面的代码例如将添加子视图,其中top,bottom,leading和trailing space设置为20,从视图控制器的主视图。