故事板 - 在故事板中为同一个ViewController创建多个视图

问题描述:

我正在使用故事板设计iPad应用程序。我有一个ViewController显示一个视图。我的问题是,当管理员看到这个屏幕时,他应该看到某个视图,而当用户看到该屏幕时,他应该看到另一个视图。我以为我应该为同一个屏幕创建两个视图,并根据谁登录它来加载相应的视图。但是,虽然我可以在之前的iOS版本的XIB文件中执行此操作,但故事板不允许我在ViewController之外创建视图,因此我无法设计多个视图。故事板 - 在故事板中为同一个ViewController创建多个视图

我的问题是:

  1. 我们能否设计在故事板上两个视图为同一ViewController?如果是,那么如何?
  2. 我需要并排看到两个视图,因此我可以分别对它们进行更改。将它们作为主视图的子视图将在运行时加载两个视图。我希望能够只加载的取决于谁已登录的意见之一。提前

感谢您的帮助

+0

好问题。我想知道你为什么没有回复。我很乐意知道答案。 – bashan 2012-03-11 22:31:13

+0

我想知道也一样!不好意思,答案似乎是否定的。 – Christopher 2012-06-15 00:06:33

+0

同样的问题在这里得到了解答:http://*.com/questions/9498010/custom-views-with-storyboard – 2013-08-08 13:29:09

您可以显示在另外一个故事板控制器的看法,但它的棘手。我在故事板中有一个选项卡视图控制器,其中一个视图具有带有分段控件的NavBar,该控件确定控制器中出现了两个视图的哪个视图。我将这称为“主”控制器。我所做的是在主视图内的“主”控制器上,我添加了两个彼此重叠的视图,这些视图适合导航栏和Tabbar以及连接的IBOutlets。

@property (retain, nonatomic) IBOutlet UIView *leftView; 
@property (retain, nonatomic) IBOutlet UIView *rightView; 

当按下了分段控制的左侧部,该rightView被隐藏(setHidden:TRUE)和leftView是取消隐藏。反之亦然。

要显示来自另一个的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的视图。