回答

2

希恩阿拉姆,

如果您在Xcode中創建一個新的TabBar項目,你可以看到一個外部NIB是從IB現有對象加載。

Tab Bar Controller http://img.skitch.com/20100329-c2533dqft4q584424926fxfidb.preview.jpg

您可以通過使用IB一個的viewController指定NIB(命令1)

First View Controller Attributes http://img.skitch.com/20100329-p83bgd8qyieb5h3dg27beinkj3.preview.jpg
+1

當我將UIViewController添加到我的項目時,它佔用了整個視圖。是否有一種方法可以使其顯示在屏幕上顯示的某些其他元素的下方?例如,在我定位的UILabel下面? – 2010-04-06 20:57:08

1

每個NIB都有一個所有者,它通常是該NIB中主視圖的控制器。您可以在Interface Builder中輕鬆創建視圖控制器的實例。只需拖出視圖控制器對象並適當地設置NIB屬性即可。

問題是,您沒有從Interface Builder內部尋址該控制器視圖的方法。您將需要編寫代碼將嵌入式視圖控制器的視圖添加爲主視圖控制器視圖的子視圖。實際上,如何實現這一點僅適用於您的應用程序,但它應該足以在主視圖控制器中引用嵌入式視圖控制器。

然後,在主視圖控制器的viewDidLoad實現中,您將嵌入式視圖控制器的view添加爲主視圖控制器的view的子視圖。您可能不得不調整嵌入式視圖的框架以適當地適合。

+0

我無法拖動一個UIViewController成我的XIB。當我添加一個UIView時,我沒有指定一個NIB名稱的選項。 – 2010-03-30 00:14:44

1

亞歷克斯的做法應該工作,但如果我理解正確,寧願一個方式,而不必在主視圖控制器的-viewDidLoad方法中以編程方式[self.view addSubview:embeddedView]

我寫了一篇很長的博客文章,我們如何embed custom-view Nibs inside other Nibs。關鍵是在您的自定義視圖中重寫-awakeAfterUsingCoder:,用從「嵌入」Nib加載的對象替換從「主」Nib加載的對象。

請注意,我們的自定義控制子UIView,不UIViewController(見Apple's docs on Custom view controllers:「你不應該使用多個自定義視圖控制器來管理同一視圖層次結構的不同部分。」)

相關問題