2013-07-10 111 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]; 
}