2011-06-22 86 views
2

我很新的iOS開發,我試圖開發一個簡單的應用程序,其中按鈕更改子視圖。我有一個基地RootViewController,它在init上正確顯示MiddleViewMiddleView有一個單獨的按鈕,標記爲「第一個」,它連接到(在Interface Builder中)到RootViewController-openFirstViewremovefromsuperview和addsubview不會改變顯示

下面是如何MiddleView是內RootViewController的顯示-viewDidLoad

MiddleViewController *middleTemp = [[MiddleViewController alloc] initWithNibName:@"MiddleView" bundle:nil]; 
    self.middle = middleTemp; 
    self.middle.rootViewController = self; 
    [self.view addSubview:middle.view]; 
    [middleTemp release]; 

所以我有以下ViewControllers S:MiddleViewControllerFirstController分別控制MiddleViewFirstViewRootViewController這兩者之間切換。

我已經放置在MiddleViewController一個RootViewController參考,並添加

self.middle.rootViewController = self; 

RootViewController-viewDidLoad連接這一點。

-(IBAction)openFirstView:(id)sender{ 
    [middle.view removeFromSuperview]; 
    [self.view addSubview:firstController.view]; 
} 

注:我試過內-openFirstView初始化firstController,當它最初並沒有跑,我搬到了初始化-viewDidLoad,並已證明,它是從筆尖正確地通過直接在-viewDidLoad顯示的firstView初始化

其中firstController加載到代碼中的引用。但是,當我運行代碼並單擊該按鈕時,視圖中的任何內容都不會改變。

我已經做了一些更多的診斷。我發現特定的-ViewDidLoadrootViewController被調用兩次,一次在原始加載和一次按鈕的第一次點擊,我不確定爲什麼。

+0

我很困惑。你能列出你擁有的'UIViewController's以及它們控制的是什麼'UIView'?另外,請在「RootViewController」中顯示'MiddleView'的方式。 – PengOne

+0

對不起,我已經更新了。 – Tas

回答

0

好像你還沒有inialize您的firstView在下面的方法

-(IBAction)openFirstView:(id)sender{ 
    [middle.view removeFromSuperview]; 
    //First initialize the firstController 
    [self.view addSubview:firstController.view]; 
} 
+0

我嘗試初始化'-openFirstView'中的'firstController',然後將初始化移動到'-viewDidLoad',以查看是否有問題。無論如何,缺乏初始化並不是問題。我會添加一個編輯來清楚說明。 – Tas

相關問題