2011-06-12 34 views
0

我的iphone應用程序出現了一個小問題(即使我之前已經完成了objective-c,我對於iphone programmation也很陌生)。作爲子視圖從xib加載的UIView:如何正確設置框架/大小?

我在我的主窗口中有一個名爲centerView的UIView。 我創建了一個與xib文件鏈接的UIViewController(我們稱之爲FooViewController)的單例子類。我的目標是將關聯視圖作爲子視圖(centerView使用centerView的整個框架)加載。

問題:由FooViewController控制的視圖不使用其超視圖的框架。

我已嘗試添加:

  • self.view.frame = self.view.superview.frame在initWithNib的 「自定義初始化」 的一部分......方法FooViewController

  • [[[FooViewController sharedController] view] setFrame:centerView.frame],當我添加視圖CENTERVIEW([centerView addSubView:[[FooViewController sharedController] view]]) (我曾試過這條線前後)

但我不能得到好的行爲(即g ood大小)。有這樣的問題有多個問題,但我無法找到我的答案在他們如此:

  • 你知道我該如何解決這個問題嗎?
  • [可選]與xib鏈接的UIViewController的實例是如何工作的?必須有一個資源文件,其中指出了xib的名稱?或者,它可能會尋找與班級同名的xib嗎?

在此先感謝您的幫助。

回答

1

從NIB加載時,視圖將加載到視圖控制器的loadView方法中,而不是在初始化程序中。既然你不應該真的重寫loadView,尤其是。如果您從NIB加載它,則應該嘗試在視圖控制器的viewDidLoad方法中執行#1(self.view.frame = self.view.superview.frame)。當然,你應該確保在你執行這個語句時視圖被添加到了超級視圖中。您還需要確保超級視圖的框架在此時已正確設置。

另一個可以試試的地方是viewWillAppear:方法。很可能你的觀點的超級觀點已經正確設定。

+0

非常感謝您的回答。我試圖把有關框架設置的代碼放在viewWillAppear中,但它似乎確實做了任何事情。實際上問題來自另一部分:即使在viewWillAppear中,superview也是null(但self.view.superview.frame不會創建任何段錯誤...)。我會研究這一點。 – ThR37 2011-06-12 21:47:48

+0

在obj-c中,如果接收者爲零,它將接受任何方法,並返回零(我認爲)。這就是爲什麼即使self.view.superview爲零也不會出現段錯誤的原因。 – 2011-06-12 22:02:08

相關問題