2011-02-25 64 views
1

我有一個UISegmented控件,它充當選項卡。 當一個標籤被點擊時,我想改變視圖到另一個頁面。monotouch - 設置當前視圖

基本上在目前我有兩個視圖分別具有從一個視圖向另一個,反之亦然切換自己段控制。

如果我使用PresentModalViewController我每次不斷添加視圖到堆棧用戶改變uiSegment這是不好的。

我想將當前視圖設置爲新視圖。 但同時保證,如果我打電話解僱我可以做回一個視圖 我applicantion是結構如下所示:

[主窗口] - > [VC顯示的項目表] - >

        |--> [VC with Segment control View 1] 

            | (swap between) 

            |--> [VC with Segment control View 2] 

所以在這兩種觀點我會有例如:

視圖1:

partial void Tabs_Changed (UISegmentedControl sender) 
    { 
     if(btnTabs.SelectedSegment == 1) { 
      View2 view2 = new View2(); //load view 2 
      this.PresentModalViewController(view2,false); 
     } 
    } 

查看2:

partial void Tabs_Changed (UISegmentedControl sender) 
    { 
     if(btnTabs.SelectedSegment == 0) { 
      View1 view1 = new View1(); //load view 1 
      this.PresentModalViewController(view1,false); 
     } 
    } 

但是,這使應用程序不可預知,因爲我不斷地疊加意見?

請幫助。

傑森

回答

0

使用PresentModalViewController()方法真不是要走的路。你的確在堆疊多個視圖,這是一件壞事。

我會做的是有一種觀點認爲,隨着UISegmentedControl另有2子視圖加入到它(使用AddSubview(查看)方法來做到這一點)。

在您的viewDidLoad方法,創建veiws和隱藏使用第二個:

view1 = new UIView(){BackgroundColor = UIColor.Green}; 
view2 = new UIView(){Hidden = true, BackgroundColor = UIColor.Red}; 
this.AddSubview(view1); 
this.AddSubview(view2); 

現在,在你的方法:

partial void Tabs_Changed (UISegmentedControl sender) 
{ 
    bool v1Visible = btnTabs.SelectedSegment == 0); 
    view1.Hidden = !v1Visible; 
    view2.Hidden = v1Visible;  
} 

我還沒有運行的代碼,但它應該工作。希望這可以幫助。