2013-07-10 69 views
0

obj-c很新穎。在視圖中來回切換

我做了一個簡單的MainViewController,從xib加載其視圖。 (從一個標準的單一視圖模板)

在主視圖是一個按鈕,帶我到另一個視圖。下面是方法:

-(IBAction)forward:(id)sender 
{ 
    tvc = [[TrackViewController alloc] initWithNibName:nil bundle:[NSBundle mainBundle]]; 
    [self.view addSubview:tvc.view]; 
} 

在另一個視圖(也從xib加載)我有一個按鈕,帶我回到主視圖。

這是我返回到主視圖IBAction爲:

-(IBAction) back:(id)sender { 
    [self.navigationController popViewControllerAnimated:YES]; 
} 

但是它不返回到主視圖。不與popToRootViewControllerAnimated:任一。

任何迴應將不勝感激!

+1

此代碼不應編譯,因爲';' – vikingosegundo

+0

這是一個錯字,感謝指出它。但它編譯 – Anders

+0

您的層次結構中是否有導航控制器?你沒有提到一個。 – rdelmar

回答

1

這個答案,當你不使用UINavigationBar的

在你前進按鈕,你需要寫申請。

TrackViewController *lf = [[TrackViewController alloc]initWithNibName:@"TrackViewController" bundle:nil]; 
[self presentViewController:TVC animated:YES completion:nil]; 

而在Backward屏幕中,您應該對。

[self dismissViewControllerAnimated:NO completion:nil]; 
+0

這正是我正在尋找的 - 謝謝大家! – Anders

0

您應該加載MainViewControllerAppDelegateUINavigationController

MainViewController *mainVC = ... 
UINavigationController *naviVC = [[UINavigationController alloc] initWithRootViewController:mainVC]; 
self.window.rootViewController = naviVC; 

然後你可以前進,你MainViewController:

-(IBAction)forward:(id)sender; 
{ 
    tvc = [[TrackViewController alloc] initWithNibName:nil bundle:[NSBundle mainBundle]]; 
    [self.navigationController pushViewController:tvc animated:YES]; 
} 

,回到你的其他的ViewController:

-(IBAction) back:(id)sender { 
    [self.navigationController popViewControllerAnimated:YES]; 
} 
+0

謝謝你,這幾乎工作:)現在,當我加載應用程序時,屏幕的頂部出現一個藍色的條(現在保留在所有視圖中),現在當我按下時,它簡要顯示了其他頁面,然後滑動到所有的黑色視圖(頂部的藍色條和一個小的「後退」按鈕)。當我點擊這個小後退按鈕時,我返回到另一個視圖,但沒有任何反應,當我按下後退按鈕時... – Anders

+0

The blue酒吧是您的導航欄。它由您設置爲根視圖控制器的導航控制器進行維護。你能否提供我的完整代碼,以便我能弄清楚你的問題是什麼? – iNevs

0

如果您的MainViewCont輥是一個UINavigationController內,那麼forward方法應該是這樣的:

-(IBAction)forward:(id)sender 
{ 
    tvc = [[TrackViewController alloc] initWithNibName:nil bundle:[NSBundle mainBundle]]; 
    [self.navigationController pushViewController:tvc animated:TRUE]; 
}