2012-02-20 122 views
14

我正在使用故事板設計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://stackoverflow.com/questions/9498010/custom-views-with-storyboard – 2013-08-08 13:29:09

回答

3

您可以顯示在另外一個故事板控制器的看法,但它的棘手。我在故事板中有一個選項卡視圖控制器,其中一個視圖具有帶有分段控件的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的視圖。