Ios 按下按钮时切换视图

Ios 按下按钮时切换视图,ios,view,uibutton,Ios,View,Uibutton,我想在按下按钮时更改视图。 在根视图.h中,我有: @interface MainViewController : UIViewController -(IBAction)switchToMap; @end -(IBAction)switchToMap { CustomViewController *customViewController = [[CustomViewController alloc] initWithNibName:@"CustomViewController"

我想在按下按钮时更改视图。 在根视图.h中,我有:

@interface MainViewController : UIViewController

-(IBAction)switchToMap;

@end
-(IBAction)switchToMap
{
    CustomViewController *customViewController = [[CustomViewController alloc] initWithNibName:@"CustomViewController" bundle:nil];
    customViewController.title = @"Mappa";
    [self.navigationController pushViewController:customViewController animated:YES];
    //[self.view addSubview:customViewController.view];
}
在.m中,我有:

@interface MainViewController : UIViewController

-(IBAction)switchToMap;

@end
-(IBAction)switchToMap
{
    CustomViewController *customViewController = [[CustomViewController alloc] initWithNibName:@"CustomViewController" bundle:nil];
    customViewController.title = @"Mappa";
    [self.navigationController pushViewController:customViewController animated:YES];
    //[self.view addSubview:customViewController.view];
}

代码不起作用,但是如果我使用第二种方法
[self.view addSubview:customViewController.view]工作,我不知道为什么。

这是因为您没有
UINavigationController
作为您的
rootViewController

AppDelegate.m

UINavigationController *navigation=[[UINavigationController alloc] initWithRootViewController:mainVC];
self.window.rootViewController=navigation;
尝试这样做:

ViewController *CustomViewController = [[ViewController alloc] init];    
[self presentViewController:CustomViewController animated:YES completion:nil];

确保navigationController中的MainViewController与IniItWithRootViewControllerb一起使用,因为没有可用的导航控制器,而不是将视图显示为模式视图,这将起作用为您的答案提供一些解释可能会使OP和其他人受益