我在cocoa touch项目中有两个名为“view1ViewController”和“view2ViewController”的视图控制器,它们都链接到故事板中的UIView。假设我在view1中放了一个按钮。 Codewise,按下那个按钮后切换到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 :(得分:2)
只需
[self.navigationController pushViewController:view2ViewController animated:YES];
简单的结果,你可以发现自己只是谷歌搜索...
我认为您的应用是基于导航的。如果不是这种情况,则需要初始化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];
其中navigationController
是UINavigationController
设置为@property
。
如果您不想设置UINavigationController
,可以选择使用
[self presentModalViewController:view2ViewController animated:YES];
答案 1 :(得分:1)
如果您尚未设置导航控制器,则此方法无效。要设置导航控制器,您需要确保当前视图是导航控制器的根视图控制器。这可以通过编程方式完成,但如果您使用Storyboard,则可以更轻松地将视图嵌入导航控制器中。一旦控制器到位,推动就应该有效。
对于Storyboard嵌入,请转到顶部菜单并选择 编辑 - >嵌入导航控制器。
要通过代码执行此操作,无论您在何处创建此视图,请将其写为
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:view1ViewController];
然后在添加了view1ViewController的任何地方添加导航控制器。