如何导航到 iPhone 中的下一个视图控制器

Posted

技术标签:

【中文标题】如何导航到 iPhone 中的下一个视图控制器【英文标题】:How to navigate to next view controller in iPhone 【发布时间】:2013-03-07 11:45:13 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

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

注意术语:push/pop 用于 Navigation Controller 堆栈上的 VC,present/dismiss 用于其他 VC(而不是 Navigation Controller 堆栈)上的 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”。

希望这会有所帮助。

【讨论】:

【参考方案2】:

确保您的笔尖名称为Second Page。您的班级名称是 SecondView 并且 nib(xib) 名称是 Second Page 那么只有它会导航。

【讨论】:

感谢@Shah Paneri,我忘记了笔尖名称.. 现在它可以工作了

以上是关于如何导航到 iPhone 中的下一个视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

iPhone - 如何将导航控制器添加到视图?

如何检测在导航控制器的下一个视图控制器中按下后退按钮

当我在 iPhone 的导航栏上单击返回时,如何弹出到所需的视图控制器

iphone导航控制器和表格视图

如何从 Appdelegate 导航到另一个视图控制器

iPhone导航控制器不显示