【发布时间】:2012-08-08 00:10:10
【问题描述】:
我有两个视图控制器,我需要在 ViewControllerOne 中有一个按钮,当我按下它时显示 ViewControllerTwo。
在故事板中,我将这两个视图与“Presenting Segues”相关联 - 推送模式。并且两个视图都有一个视图控制器类。
【问题讨论】:
标签: iphone objective-c ios
我有两个视图控制器,我需要在 ViewControllerOne 中有一个按钮,当我按下它时显示 ViewControllerTwo。
在故事板中,我将这两个视图与“Presenting Segues”相关联 - 推送模式。并且两个视图都有一个视图控制器类。
【问题讨论】:
标签: iphone objective-c ios
我不确定您所说的“我将这两个视图与 'Presenting Segues' - Push modal 相关联”是什么意思。您是在使用导航控制器并想要推送转场,还是想做模态转场? “推送模式”在术语上是矛盾的。
所以,让我们假设您想要一个模态转场。因此,您在第一个视图上放置一个按钮,右键单击并从该按钮拖动(或按住 Control 单击并拖动)到第二个视图。
你会得到一个询问segue类型的弹出窗口。选择“模态”。
您已经完成了从 1 到 2 的转换。无需任何代码。
如果您希望第二个视图上的按钮将您带回第一个视图,您确实不想要从第二个视图返回到第一个视图的模态segue,而是您想要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的方式。
【讨论】: