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

问题描述:

这确实应该起作用。这是iOS中最简单的事情之一,由于某些原因,它只是不起作用。iOS中的简单视图控制器开关

我的故事板中有两个视图控制器。一个是InitViewController,另一个是ViewController,分别具有Init和ViewOne的故事板ID。我在InitViewController上有一个运行代码来切换视图的按钮。代码运行正常,但没有发生,尽管这一事实。这里是代码:

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

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

} 

我导入ViewController.h,我只是不知道为什么这是行不通的。

+0

你的初始视图控制器实际嵌套在'UINavigationController'内吗?当手动调用'pushViewController:animated:'时,这可能是“present”segue工作的原因之一,因为当它不嵌套在导航控制器中时,它会回落到模式演示文稿中。 –

+0

好吧,如果它没有奏效,那就不足为奇了。视图控制器是否返回名称为ViewOne的精确视图控制器?你的视图控制器在哪里?它是在xib还是在故事板? –

initWithNibName:适用于在.xib文件中创建的视图控制器,而不是故事板。从故事板使用-[UIStoryboard instantiateViewControllerWithIdentifier:]

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

您也可以在故事板中设置推式继续,而不是在代码中执行操作 – dan

+0

上面的代码似乎也没有做到。我甚至试过[[UIStoryboard storyboardWithName:@“Main”bundle:nil] instantiateViewControllerWithIdentifier:@“ViewOne”];我可能会错过什么?我会接下来尝试继续。 –

+0

好的,push segue工作,但它仍然不理想。我希望能够根据以前的用户交互动态设置按钮以转到不同的区域。 –

创建一个视图控制器,你需要一个NavigationController - 尝试登录self.navigationcontroller,你将看到的是null 在你的故事板添加UINavigationController设置为入口点,设置InitViewController为根视图控制器然后你可以使用:

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