以编程方式定义和执行 segue

Posted

技术标签:

【中文标题】以编程方式定义和执行 segue【英文标题】:Programmatically define and perform segue 【发布时间】:2013-10-18 15:27:49 【问题描述】:

我正在使用 Storyboard,我有 20 个视图控制器,它们的角落都有相同的“设置”按钮。单击它会执行对另一个 VC 的 Segue,我只是将其关闭以返回原始状态。

问题是我将不得不从所有 VC 中按住 ctrl-drag 到这个,这会导致 Storyboard 非常混乱。是否可以务实地添加它们?

我尝试展示它们,但是当我关闭时,我只是得到一个黑屏。使用以下;

settingsViewController *settingsVC = [[settingsViewController alloc]init];

[self presentViewController:settingsVC animated:YES completion:nil];

然后我就这样解雇了;

[self dismissViewControllerAnimated:YES completion:nil];

【问题讨论】:

那是什么类型的转场? Custom, push, modal? 在我使用模态的情节提要中,这些工作正常,但我想最小化情节提要中的箭头。此 presentViewController 的“设置”看起来不错,只是消失为黑色。 【参考方案1】:

首先,通过使用 alloc init 创建 settingsVC,您完全绕过了情节提要,这就是情节提要添加 UI 时出现黑屏的原因。

但是,您仍然可以完全不使用 segues。

要做的第一件事,在故事板中。转到设置控制器并在属性检查器中给它一个标识符。类似“SettingsViewController”的东西。

现在在您设置按钮操作...

- (IBAction)settingsButtonPressed

    UIViewController *settingsViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"SettingsViewController"];

    [self presentViewController:settingsViewController animated:YES completion:nil];

这将使用情节提要来创建视图控制器,以便您随后可以将其所有 UI 呈现在适当的位置。

【讨论】:

您将如何使用自定义初始化方法进行初始化?

以上是关于以编程方式定义和执行 segue的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式执行 unwind segue

无法以编程方式执行 segue

在单元测试中以编程方式执行 Unwind Segue

无法以编程方式执行 unwind segue

以编程方式从 Xib 执行 Segue

如何以编程方式从 TableView 执行 segue