我是iOS开发的新手。我的应用程序中有两个视图控制器。我正试图在我的应用程序中从第一个视图控制器导航到第二个视图控制器。
SecondView *ss=[[SecondView alloc] initWithNibName:@"Second Page" bundle:nil];
[self.navigationController pushViewController:ss animated:YES];
我在“堆栈溢出”中找到了这段代码,但它不起作用。
答案 0 :(得分:1)
您收到此错误是因为您可能尝试使用Navigator控制器代码(推送)从一个VC转到另一个VC,并且您可能在代码或Interface Builder中没有设置导航控制器。
您可以在不使用导航控制器的情况下展示/解除VC,我建议您从此开始。
请注意术语:push / pop用于导航控制器堆栈上的VC,其他VC(而不是导航控制器堆栈)上的VC用于提示/关闭。
有几种方法可以在另一个VC的“顶层”上呈现VC,这取决于您的SB上是否存在VC:
1-如果您的IB中不存在VC并且您只是以编程方式创建和呈现VC,则可以执行以下操作:
MyUIViewControllerSubclass *myLittleSubclass=[[MyUIViewControllerSubclass alloc]init];
myLittleSubclass.view.frame=self.view.frame; //this is for example only
[self presentViewController:myLittleSubclass animated:YES completion:nil];
通过上述内容,您显然必须首先将MyUIViewControllerSubclass Objective C类添加到您的项目中(使用添加文件)并将其导入到您放置上述代码的任何类中。
稍后将其解雇,您可以使用MyUIViewControllerSubclass类中的以下代码。
[self.parentViewController dismissViewControllerAnimated:YES completion:nil];
2-如果您已经将MyUIViewControllerSubclass Objective C类添加到您的项目中(使用添加文件)但您打算使用IB来设计它并且您已在IB中添加了VC并将其在IB中的类更改为MyUIViewControllerSubclass,您可以使用此代码:
mySubclass *myLittleSubclass=[self.storyboard instantiateViewControllerWithIdentifier:@"theVC"];
[self presentViewController:myLittleSubclass animated:YES completion:nil];
您可以解雇上述内容。确保单击SB中的VC并在身份检查器中,将SB ID设置为“theVC”并选中“使用SB ID”。
希望这有帮助。
答案 1 :(得分:0)
确保您的笔尖名称为Second Page
。您的班级名称为SecondView
,nib(xib)名称为Second Page,然后才会导航。