2011-12-24 109 views
0

我有两个视图控制器名为“view1ViewController”和“view2ViewController”在一个可可触摸项目,他们都链接到故事板中的UIView。假设我在view1中放置了一个按钮。代码方面,按下该按钮后切换到view2的最简单方法是什么?我需要输入哪些代码才能使其工作?如何在可可触摸中切换视图?

- 更新 -

尽管你都告诉我这件事,我还是不能得到这个工作。也许我没有得到什么?我需要添加其他东西吗?下面是view1ViewController.m代码:

#import "view1ViewController.h" 
#import "view2ViewController.h" 


@interface view1ViewController() 

@property (nonatomic, strong) view2ViewController *controller; 

@end 

@implementation view1ViewController 
@synthesize controller = _controller; 

- (view2ViewController *)controller 
{ 
    if (!_controller) { 
     _controller = [[view2ViewController alloc] init]; 
    } 
    return _controller; 
} 

- (IBAction)buttonPressed { 
    [self.navigationController pushViewController:self.controller animated:YES]; 
} 
@end 

我没碰过其他文件,并确保设置类添加视图在故事板view2ViewController。

+0

Xcode只是一个IDE - 所以正确的答案是:完全没有 – vikingosegundo 2011-12-24 03:56:15

+0

您是否需要在代码中完成它,或者基于segue的方法适用于您? – dasblinkenlight 2011-12-24 03:56:33

+0

我真的不喜欢基于segue的方法,因为我正在开发一个应用程序,它需要一个相当动态的方法来处理视图, – blake305 2011-12-24 04:01:28

回答

2

只是

[self.navigationController pushViewController:view2ViewController animated:YES]; 

简单的结果,你可以能够找到自己只是google搜索了一会儿......

我假定你的应用是导航为主。如果不是这种情况,则需要初始化一个UINavigationController。例如,在您的应用程序委托,在你didFinishLaunchingWithOptions:方法,你可以这样做

navigationController = [[UINavigationController alloc] init]; 
[self.window addSubview:navigationController.view]; 
[navigationController pushViewController:self.viewController animated:NO]; 

[self.window addSubview:navigationController.view]; 
[self.window makeKeyAndVisible]; 

其中navigationControllerUINavigationController设为@property

如果你不想安装一个UINavigationController你可以选择呈现另一种观点模态使用

[self presentModalViewController:view2ViewController animated:YES]; 
+0

我必须#在任何文件中导入任何内容吗?因为它说的意外推断名称“view2ViewController” – blake305 2011-12-24 04:32:30

+0

你必须#导入view2ViewController的头文件在任何文件你想引用它。还要记住,如果你不使用ARC,你会想释放你的view2viewcontroller:View2ViewController * controller = [[View2ViewController alloc] init]; [self.navigationController pushViewController:controller animated:YES]; [控制器发布]; – 2011-12-24 04:37:03

+0

它仍然无法正常工作。你能在主文章中阅读我的更新吗?你的评论很有帮助顺便说一句,杰克! – blake305 2011-12-24 04:56:16

1

如果您还没有安装导航控制器,这种做法是行不通的。要设置导航控制器,您需要确保当前视图是导航控制器的根视图控制器。这可以以编程方式完成,但是如果使用故事板,将视图嵌入导航控制器会更容易。一旦控制器就位,推动应该工作。

对于故事板嵌入,转到顶部菜单并选择 编辑 - >嵌入导航控制器。

对于通过代码做,只要你创建这个观点,而不是把它写成

UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:view1ViewController]; 

那么无论你添加的view1ViewController添加导航控制器。