iOS中的简单视图控制器开关

iOS中的简单视图控制器开关,ios,objective-c,uiviewcontroller,Ios,Objective C,Uiviewcontroller,这真的应该管用。这是在iOS中实现的最简单的事情之一,但由于某些原因,它无法工作 我的故事板中有两个视图控制器。一个是InitViewController,另一个是ViewController,脚本ID分别为Init和ViewOne。我在InitViewController上有一个按钮,它正在运行代码来切换视图。代码运行正常,但尽管如此,还是没有发生任何事情。代码如下: -(IBAction)NextPage:(id)sender{ ViewController *wc = [[ViewCo

这真的应该管用。这是在iOS中实现的最简单的事情之一,但由于某些原因,它无法工作

我的故事板中有两个视图控制器。一个是InitViewController,另一个是ViewController,脚本ID分别为Init和ViewOne。我在InitViewController上有一个按钮,它正在运行代码来切换视图。代码运行正常,但尽管如此,还是没有发生任何事情。代码如下:

-(IBAction)NextPage:(id)sender{
  ViewController *wc = [[ViewController alloc]
                                initWithNibName:@"ViewOne"
                                bundle:nil];

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

}

我导入了ViewController.h,我只是不知道为什么它不起作用。

initWithNibName:
用于在
.xib
文件中创建的视图控制器,而不是故事板。要从序列图像板创建视图控制器,请使用
-[UIStoryboard InstanceeviewController WithiIdentifier:

ViewController *wc = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewOne"];
[self.navigationController pushViewController:wc animated:YES];

您需要一个导航控制器-尝试记录
self.NavigationController
,您将看到is
null
在故事板中添加
UINavigationController
将其设置为入口点,将
InitViewController
设置为根视图控制器,然后可以使用:

ViewController *wc = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewOne"];
[self.navigationController pushViewController:wc animated:YES];

您还可以在故事板中设置推送序列,而不是在代码中执行操作。上面的代码似乎也没有这样做。我甚至尝试了[[UIStoryboard storyboard,名称:@“Main”bundle:nil]实例化eviewController,标识符:@“ViewOne”];我会错过什么?下一步我会试试segue。好吧,推式segue有效,但仍然不理想。我更希望能够根据以前的用户交互动态设置一个按钮以转到不同的区域。当它不工作时会发生什么?是否
wc
nil?还是导航控制器?您确定您的标识符在情节提要中设置正确吗?它不是零,我甚至可以在调试区域中看到我为该视图设置的标题,但该视图就是不出现。您的初始视图控制器是否实际嵌套在
UINavigationController
中?这可能是当手动调用
pushViewController:animated:
不起作用时,“present”segue起作用的一个原因,因为当它没有嵌套在导航控制器中时,它将返回到模式演示。如果它不起作用,这一点也不奇怪。视图控制器是否返回名为ViewOne的确切视图控制器?视图控制器在哪里?它是在xib中还是在故事板中?