我想我錯過了一些基本的東西,所以我想問一下社區的一些幫助。我正在構建基於基本iPhone實用程序應用程序的應用程序。我的MainView和FlipsideView共享一些元素,所以我爲這些塊創建了單獨的ViewControllers和nib文件。爲了做到這一點,我做了以下幾件事: 1.創建一個名爲searchDateViewController的視圖控制器,它是searchDateView.xib的文件所有者。 2. searchDateView.xib基本上是一個UIView,內部帶有UILabel,視圖連接正確 3.內部都MainViewController.m和FlipsideViewController.m我添加一個子視圖作爲folllows:superview和parentviewcontroller在添加子視圖後爲零
- (void)loadView{
[super loadView];
searchDateViewController = [[SearchDateViewController alloc] initWithNibName:@"SearchDateView" bundle:nil];
[[searchDateViewController view] setFrame:[searchDateView frame]];
[[self view] addSubview:[searchDateViewController view]];
...
}
一切都顯示和工作得很好。基本上取決於每個主視圖和反面視圖中發生的操作,筆尖的UILabel已更改。但是,如果searchDateViewController是從MainView或FlipsideView加載的,我想做一些稍微不同的事情。但是,我似乎無法找出哪個ViewController添加searchDateViewController子視圖。
在searchDateViewController我想:
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"superview %@", self.view.superview);
NSLog(@"parentviewcontroller %@", self.parentViewController);
}
在這兩種情況下,我得到零。
所以我的問題是 - 我可以找出哪個ViewController添加searchDateViewController一個子視圖?如果是這樣如何?或者如果我的邏輯完全搞砸了,我該怎麼做呢?
謝謝!
好的,謝謝你指出我有關子視圖和UIViewController子類的正確方向。如果我讓SearchDateViewController成爲NSObject的一個子類,那麼這將如何影響我添加子視圖和使用nib啓動的方式?我還沒有找到任何子視圖的例子作爲nsobjects而不是視圖控制器,但我想在這種情況下開始採用任何標準的做法。如果您有任何更多提示,請告知我,謝謝! 此外 - 你們都建議使用父控制器,這是有道理的,但超視角扮演什麼角色?這在這裏會更合適嗎? – deadroxy 2010-01-14 15:49:33
使SearchDateViewController成爲NSObject的一個子類並沒有消除你的問題,它只是避免了未來的問題,因爲UIViewControllers並不真正用於不佔用整個窗口恕我直言的視圖。 要解決您的問題,您的視圖自定義代碼不應該依賴於self.parentViewController或view.superview。相反,在SearchDateViewController中定義一個屬性(可以是BOOL或枚舉),然後查詢它們以決定如何定製視圖。創建SearchDateViewController的對象應該設置屬性。 – 2010-01-14 19:23:02
我這樣做就像你說的在SearchDateViewController類中創建一個屬性,它工作正常。然而,我仍然困惑於如何從UIViewController的子類轉換爲UIView/NSObject。特別是誰成爲SearchDateView的文件所有者?我試過每一種方式,我所做的一切都會導致錯誤。 – deadroxy 2010-01-14 20:42:06