如何在cocoa touch中切换视图?

时间:2011-12-24 03:53:39

标签: ios cocoa-touch uikit uistoryboard

我在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。

2 个答案:

答案 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];

其中navigationControllerUINavigationController设置为@property

如果您不想设置UINavigationController,可以选择使用

模态显示其他视图
[self presentModalViewController:view2ViewController animated:YES];

答案 1 :(得分:1)

如果您尚未设置导航控制器,则此方法无效。要设置导航控制器,您需要确保当前视图是导航控制器的根视图控制器。这可以通过编程方式完成,但如果您使用Storyboard,则可以更轻松地将视图嵌入导航控制器中。一旦控制器到位,推动就应该有效。

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

要通过代码执行此操作,无论您在何处创建此视图,请将其写为

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

然后在添加了view1ViewController的任何地方添加导航控制器。