2009-12-15 42 views
0

我有一個主視圖與關聯的控制器。我有一些相當複雜的工具欄,需要根據用戶交互進行切換。分解iPhone用戶界面 - 在一個xib中有多個視圖?

爲了簡單起見,我管理的工具欄和我的主視圖控制器,而不是各種錯綜複雜的依賴或非常深的委託鏈。

反正,我怎麼能有一個XIB多個視圖,並正確初始化呢?就像如果我想在屏幕中央顯示我的自定義視圖之一一樣,我該怎麼做?

或者,如果我的意見分成多個xibs,如何可以有他們引用相同的控制器對象爲其IBOutlets/IBActions?

+0

Duplicate:http://stackoverflow.com/questions/1726250/nsviewcontroller-and-multiple-subviews-from-a-nib – 2009-12-15 19:39:07

回答

2

反正,我怎麼能有多個視圖在一個XIB 並進行初始化 正常嗎?如果我想在屏幕的中心 中顯示 我的一個自定義視圖,我該怎麼做?

您可以根據需要在xib中擁有儘可能多的UIView。通常情況下,您將創建一個「主」視圖 - 即與文件所有者的視圖屬性(即您的視圖控制器)相連接的視圖 - 其餘部分可以位於同一級別的xib中。您也可以將它們連接到視圖控制器中的其他屬性。

你可以把這些意見子視圖主視圖。 (很少,這是很多觀點)。假設您有兩個觀點,FooViewBarView。你想在啓動時出現FooView。因此,您只需將BarView設置爲隱藏在IB中即可。然後您的視圖控制器可能是這個樣子:

@interface MyViewController : UIViewController 
{ 
    FooView* fooView; 
    BarView* barView; 
    ... 
} 
... 
@property (nonatomic, retain) IBOutlet FooView* fooView; 
@property (nonatomic, retain) IBOutlet BarView* barView; 
... 

然後,你的代碼中,當你想更改視圖,只需使用setHidden:方法來隱藏一個和顯示等。

替代地,如果我分成多個xibs觀點 ,我怎樣纔能有 它們引用相同的控制器 對象爲其IBOutlets/IBActions?

您可以讓其他xib共享相同的視圖控制器。我自己做了很多。只需將文件所有者設置爲適當的類。

2

其實很簡單。您只需在您的XIB文件中創建一個新的根級視圖,並在您的主視圖控制器中爲此視圖創建一個IBOutlet

至於從XIB直接加載視圖,共享相同的視圖控制器,這是多一點馬虎..你基本上需要遍歷XIB文件中的項目,並找到你要找的元素。

+0

我已經這樣做了,但我沒有拖動我的BarView到MainViewController,所以它不顯示。我如何顯示它? – DevDevDev 2009-12-15 19:58:26

+0

沒有想到它,不得不將它添加爲子視圖。以爲我曾試圖沒有成功,但它的工作。 – DevDevDev 2009-12-15 20:06:51

0

這種方法需要注意的一點是,全部視圖在需要任何視圖時被初始化。

如果你的觀點很簡單,這可能沒有關係,但如果你有複雜的看法,這可能使您的應用程序加載緩慢。

如果意見是有些複雜,你應該將它們分割成不同的.xib文件。在這種情況下,父母UIViewController會將IBOutlets分配給其他UIViewController子類,而不是IBOutlet分配給UIViews。視圖控制器將自動處理它們各自視圖的延遲加載。