2011-03-18 61 views
0

我在View控制器中有一個分段控件。在不使用UITabBar或Nav控制器的情況下在View Controller中交換

我想在點擊分段時將不同視圖加載到中間。有效地使它成爲一個標籤欄控制器。 (問:爲什麼不直接使用一個標籤欄控制器,A:我已經有一個)

這裏是我的要求:

  1. 我要到處使用視圖控制器。一個'超級視圖控制器'來管理分段控制。兩個'子視圖控制器'用於在分割控件被點擊時顯示內容。

  2. 我想要視圖加載/卸載和其他消息來你所期望的子視圖控制器。

  3. 我想要一個整潔優雅的解決方案。最小的黑客行爲。

我目前的執行情況2點失敗:

- (IBAction)valueChanged:(id)sender { 

     switch (self.segmentedControl.selectedSegmentIndex) { 

      case 0: 
       { 
        ThirdVC* vc = [[ThirdVC alloc] initWithNibName:@"ThirdVC" 
            bundle:nil]; 
        [self.centerView addSubview:vc.view]; 

       } 
       break; 
       ... etc 

回答

0

在上面的代碼中。

  1. 您正在每個水龍頭上創建一個新的viewcontroller,而不是釋放它。這會導致內存泄漏。

解決方法。

您可以爲您的超級視圖控制器創建UIViewController的兩個實例變量(表示: - 子視圖控制器)。

根據段動作,您可以將此子視圖控制器添加到超級視圖控制器並將其刪除。

可以通過使用

收聽視圖沒有裝載/卸載消息

- (無效)viewWillAppear中:(BOOL)動畫

(無效)viewWillDisappear:(BOOL)動畫

方法的子視圖控制器。

希望這會有所幫助。

相關問題