按下按钮更改视图控制器

时间:2012-08-07 00:00:26

标签: iphone objective-c ios

我有两个View控制器,我需要在ViewControllerOne中有一个按钮,当我按下它时显示ViewControllerTwo。

在故事板中,我将两个视图与“呈现区域”相关联 - 推模态。并且两个视图都有一个视图控制器类。

2 个答案:

答案 0 :(得分:9)

我不确定你的意思是“我将两个视图与'呈现Segues'相关联 - 推模态。”您使用的是导航控制器并且想要推送segue,还是想要进行模态转换? “推模式”是一个矛盾。

所以,让我们想象你想要一个模态segue。因此,您在第一个视图上放置一个按钮,右键单击并从该按钮拖动(或按住Control并单击并拖动)到第二个视图。

create segue 1

你会弹出一个询问segue类型的人。选择“模态”。

create segue 2

你完成了从1到2的转换。无需代码。

如果你想让第二个视图上的一个按钮带你回到第一个视图,你想要从第二个视图回到第一个视图的模态segue,而是你想要dismissViewControllerAnimated。您可以通过自定义segue执行此操作,也可以更轻松地使用调用dismissViewControllerAnimated的按钮。因此,您可以在第二个视图中添加一个按钮,同时编辑器处于“助手”模式(关联的.h文件显示在界面构建器下方;如果您想知道如何显示,请参见下文)。 h与Interface Builder屏幕同时发送文件),右键单击(或按住Control键单击)并从第二个视图上的按钮向下拖动到第二个视图控制器的.h文件:

dismiss 1

顺便说一句,如果你没有看到那里的.h文件,点击“助手”编辑器按钮并选择“自动”显示要在那里显示的文件,你应该很好:

assistant editor

然后它会显示一个弹出窗口,询问您要执行的操作。选择IBAction并为您的新方法命名:

dismiss 2

然后转到视图控制器的代码,并添加dismissViewControllerAnimated代码:

enter image description here

所有代码都说明了(在本例中,我刚刚调用了我的IBAction dismissTwo):

- (IBAction)dismissTwo:(id)sender
{
    [self dismissViewControllerAnimated:YES completion:nil];
}

答案 1 :(得分:5)

如果你想做推送segue,那就更容易了。首先,如果您还没有导航控制器,请选择第一个视图并选择“嵌入” - “导航控制器”来添加一个:

push 1

当你这样做时,你将拥有一个新的导航控制器(你真的不需要做太多),第一个视图将有一个导航栏。

push 2

现在,在第一个视图的按钮上单击鼠标右键(或按住Control键单击)并拖动到第二个视图:

push 3

这一次,选择“推送”segue:

push 4

你会知道它有效,因为你的第二个视图将有一个导航控制器

enter image description here

您不需要按钮就可以返回,因为导航控制器会自动显示“后退”按钮,因此您无需添加自己的按钮。

这就是你实现推送的方式。