2014-07-08 57 views
0

我建立一個應用程序,應該能到不同的子視圖加載到一個容器中,主視圖,像這樣: storyboard加載特定的子視圖到一個容器與上海華盈的按鈕

當淺綠色視圖負荷,應在容器內顯示黃色視圖。 (忽略黃色視圖頂部的按鈕,實際上他們不應該在那裏)

該應用程序將存儲一個值,記住如果用戶按下「play local」或「播放youtube」。如果用戶按下「播放本地」,則應加載橙色/藍色/淡藍色之一,如果按下「播放YouTube」,則應加載黑色/棕色/紫色視圖。

如果按下清除按鈕,容器應該再次顯示黃色視圖。

如何獲取綠色控制器中的按鈕以引用要在容器內顯示的視圖?

回答

1

您應該在綠色控制器中實現prepareForSegue。這會在它被實例化之後被調用,因爲它嵌入了導航控制器。現在

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(NSURLRequest *)sender { 
    UINavigationController *nav = segue.destinationViewController; 
    self.yellow = nav.topViewController; // yellow is a property pointing to your yellow view controller; 
} 

,在你的按鈕的方法,你可以叫基於你的邏輯,你需要的任何Segue公司,

[self.yellow preformSegueWithIdentifier:@"Orange" sender:self]; 
+0

我明白了。我的問題的一部分是讓屬性顯示出來。例如,我在哪裏將該屬性稱爲黃色?如果我嘗試按住Ctrl並拖動到我的主ViewController.h文件,它不會執行任何操作。我假設我需要創建一個新文件,但我不知道該把它放在哪裏以及如何綁定它。 – marisbest2

+0

@ marisbest2,我不知道爲什麼沒有工作。該屬性可以放在綠色控制器的.h或.m文件(類擴展名)中。 – rdelmar

+0

對不起,我誤解了。現在我遇到了一個問題,當我調用preformSegueWithIdentifier時:發件人:我正在推入導航堆棧,該堆棧不能太大而且會卡住。 – marisbest2

0

將下列代碼寫入按鈕按下時將調用的函數中。

UIStoryboard* storyboard = [self storyboard]; 
     PlayLocalViewController *yourView = [storyboard instantiateViewControllerWithIdentifier:@"PlayeLocalControllerID"];              //yourViewis the ViewController object 
     yourView.view.frame = self.yourContainerView.bounds; 
           //youContainerView is the containerView property. 
     [self.yourContainerView addSubview:yourView.view]; 
     [self addChildViewController:yourView]; 
     [yourView didMoveToParentViewController:self];