2013-12-13 42 views
3

我試圖將一個複雜的xib組織成多個視圖。iOS - 界面生成器 - 在同一個xib中綁定多個視圖

假設以下情形:

我主視圖(綠色的),其中包含兩個子視圖(紅色和黃色的)。
其實我可以創建三個xib並以編程方式添加子視圖。
我發現了一個更智能的解決方案:我在主視圖(綠色)中定義兩個IBOutlet並將它們連接到子視圖。

@property (nonatomic, weak) IBOutlet RedView * redView; 
@property (nonatomic, weak) IBOutlet YellowView * yellowView; 

在主視圖中實現,編程,我添加子視圖:

- (void)awakeFromNib 
{ 
    [super awakeFromNib]; 
    self.redView.frame = self.frame; 
    self.redView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; 
    self.yellowView.frame = self.frame; 
    self.yellowView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; 

    [self addSubview:self.redView]; 
    [self addSubview:self.yellowView]; 
} 

正如你所看到的,我需要設置當前幀的大小,autoresizingMask和子視圖添加到父。

問題:

有沒有直接從廈門國際銀行執行這些操作的好方法? 我想加載xib(「loadNibNamed」)並獲取已經填充子視圖的主視圖(綠色)。

我已經嘗試了一些解決方案,但沒有作品...

編輯:
我不希望添加的紅色和黃色視圖直接在IB子視圖。
這兩個子視圖與父級一樣大,這使得與界面生成器一起工作變得複雜(隱藏黃色視圖並在紅色上工作,然後隱藏紅色並在黃色上工作)。
我想在同一個xib中有單獨的視圖,但是能夠在父子樹中「構圖」它們...

+0

是的,你可以把兩個子視圖放在xib中的綠色內。如果你想讓它們成爲子視圖,你爲什麼要把它們作爲單獨的視圖? – rdelmar

+0

假設紅色和黃色視圖與綠色視圖一樣大,因爲我應用了一個水平滑動效果,因此當時只有一個孩子可見。如果我把兩個子視圖放到父項中(好的,這個工作正常),使用IB變得更加困難(隱藏紅色視圖並在黃色上工作,然後隱藏黃色並在紅色上工作,等等......) 。 –

+0

你不需要隱藏視圖,你可以按照他的回答中的巧妙錯誤建議對它們重新排序。在任何情況下,xib都無法爲您自動添加子視圖,您需要像顯示的代碼那樣執行此操作。 – rdelmar

回答

0

而不是通過將視圖拖入開放空間來創建紅色和黃色視圖。將視圖拖到綠色視圖上。它將被添加爲子視圖。

只有使用左側的列表才能移動現有的視圖。將列表中與紅色視圖對應的行拖到列表中綠色視圖的行上。

+0

綠色視圖只是兩個子視圖的容器,與父視圖一樣大。真正的內容顯示在子視圖上,並對它們應用滑動效果。當時只有一個子視圖可見。 我想在IB中分開子視圖以更好地處理它們。否則,我必須每次隱藏我不感興趣的觀點... 我認爲要將IB中的子視圖分開以便更好地處理它們。否則,我必須隱藏所有的時間,我不感興趣的意見... –

+0

在這種情況下,唯一的方法就是在代碼中。 –

+0

好的,非常感謝您的回答! –

相關問題