1

我是 iOS 开发的新手。我的应用程序中有两个视图控制器。我正在尝试在我的应用程序中从第一个视图控制器导航到第二个视图控制器。

SecondView *ss=[[SecondView alloc] initWithNibName:@"Second Page" bundle:nil];
    [self.navigationController pushViewController:ss animated:YES];

我在“堆栈溢出”中找到了这段代码,但它不起作用。

4

2 回答 2

1

您收到此错误是因为您可能尝试使用 Navigator 控制器代码(推送)从一个 VC 转到另一个 VC,并且您可能没有在代码或 Interface Builder 中设置导航控制器。

你可以在不使用导航控制器的情况下展示/关闭 VC,我建议你从这个开始。

注意术语:push/pop 用于导航控制器堆栈上的 VC,present/dismiss 用于其他 VC(而不是导航控制器堆栈)上的 VC。

有几种方法可以在另一个 VC 的“顶部”呈现 VC,这取决于该 VC 是否也存在于您的 SB 上:

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”。

希望这可以帮助。

于 2013-03-08T15:31:10.660 回答
0

确保您的笔尖名称带有Second Page. 您的班级名称是SecondView并且 nib(xib) 名称是 Second Page 然后只有它会导航。

于 2013-03-08T04:38:31.023 回答