我有两个视图控制器,我需要在 ViewControllerOne 中有一个按钮,当我按下它时向我显示 ViewControllerTwo。
在情节提要中,我将这两个视图与“Prepresenting Segues”相关联 - 推送模式。两个视图都有一个视图控制器类。
我有两个视图控制器,我需要在 ViewControllerOne 中有一个按钮,当我按下它时向我显示 ViewControllerTwo。
在情节提要中,我将这两个视图与“Prepresenting Segues”相关联 - 推送模式。两个视图都有一个视图控制器类。
我不确定您所说的“我将这两个视图都与 'Presenting Segues' - Push modal 相关联”是什么意思。您是在使用导航控制器并想要推送转场,还是想做模态转场?“推送模式”在术语上是矛盾的。
所以,让我们假设你想要一个模态转场。因此,您在第一个视图上放置一个按钮,右键单击并从该按钮拖动(或按住 Control 单击并拖动)到第二个视图。
你会弹出一个询问segue类型的窗口。选择“模态”。
你已经完成了从 1 到 2 的转换。不需要任何代码。
如果您希望第二个视图上的按钮将您带回第一个视图,您不希望从第二个视图返回到第一个视图的模态转换,而是您想要dismissViewControllerAnimated
. 您可以通过自定义 segue 来执行此操作,或者更简单,只需一个调用dismissViewControllerAnimated
. 因此,您将在第二个视图中添加一个按钮,并且当编辑器处于“助手”模式时(关联的 .h 文件显示在界面构建器下方;如果您想知道如何显示 .h 文件,请参见下文。 h 文件与 Interface Builder 屏幕同时显示),右键单击(或按住 Control 单击)并从第二个视图上的按钮向下拖动到第二个视图控制器的 .h 文件:
顺便说一句,如果您在那里看不到 .h 文件,请单击“助手”编辑器按钮并选择“自动”以便在此处显示文件,您应该会很好:
然后它会向您显示一个弹出窗口,询问您想要做什么。选择IBAction
并为您的新方法命名:
然后转到视图控制器的代码,并添加dismissViewControllerAnimated
代码:
所有这些代码都说(在这个例子中,我刚刚调用了我的 IBAction dismissTwo
)是:
- (IBAction)dismissTwo:(id)sender
{
[self dismissViewControllerAnimated:YES completion:nil];
}
如果你想做一个 push segue,那就更容易了。首先,如果您还没有导航控制器,请通过选择第一个视图并选择“嵌入”-“导航控制器”来添加一个:
当您这样做时,您将拥有一个新的导航控制器(您实际上并不需要对其进行太多操作),并且第一个视图将有一个导航栏。
现在,右键单击(或按住 Control 单击)第一个视图的按钮并拖动到第二个视图:
这一次,选择“push”segue:
而且您会知道它有效,因为您的第二个视图将有一个导航控制器
你不需要一个按钮来返回,因为导航控制器会自动有一个“返回”按钮,所以你不需要自己添加。
这就是你实现 push segue 的方式。