加载没有 Segue 的视图表单 StoryBoard

Posted

技术标签:

【中文标题】加载没有 Segue 的视图表单 StoryBoard【英文标题】:load view form StoryBoard that does not have a Segue 【发布时间】:2012-05-26 19:51:05 【问题描述】:

我真的很喜欢在 Storyboard 中布置我的所有视图,但有时我会根据由代码生成的按钮显示视图,因此不会有 Segue 参考 - 它会是在情节提要中完全断开连接。我仍然想在故事板中设计它,这样我就可以很好地概览我的所有屏幕。

我是否可以在加载 UIViewControler 时加载在情节提要中设计的 XIB(或情节提要中的任何内容)?

【问题讨论】:

你能给我们举个例子来说明你想要做什么吗?什么样的数据负责创建新视图?一般来说,我建议您创建一个新类或 yust 一个具有相同类的视图,并根据用户输入隐藏或生成视图内容。你会更容易 【参考方案1】:

我在我的项目中这样做:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *myController = [storyboard instantiateViewControllerWithIdentifier:@"MyViewController"];
[self.navigationController pushViewController: myController animated:YES];

只需确保您已正确设置控制器的标识符即可。你可以这样做:

    在 Storyboard 中选择控制器 在实用程序面板中,单击属性检查器。无论您决定在 Identifier 字段中添加什么,都将在“instantiateViewControllerWithIdentifier”语句中进行。

我希望这会有所帮助。

【讨论】:

完美,正是我想要的——谢谢。虽然这不是完全必要的,但很高兴在一个屏幕上看到我的所有 UIView。 最初它没有锻炼,但后来.. [self presentViewController:vc animated:YES completion:NO]; 在最后一行为我做了魔法。 是的 Mayu,应该注意的是,只有当视图控制器嵌入到导航视图控制器中时,使用 [self.navigationController push...] 才有效。【参考方案2】:

您必须为您的视图控制器分配一个Storyboard ID

IB > 显示身份检查器 > 身份 > 故事板 ID

斯威夫特

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let viewcontroller = storyboard.instantiateViewControllerWithIdentifier("viewController")
                     as? UIViewController
if let navigationController = self.navigationController 
    navigationController.pushViewController(viewcontroller!, animated: true)

【讨论】:

截图对我有帮助。谢谢

以上是关于加载没有 Segue 的视图表单 StoryBoard的主要内容,如果未能解决你的问题,请参考以下文章

故事板 Segue 未加载视图

Xcode 显示加载视图,直到第二个视图加载(在 segue 节目中)

使用 segue 向后导航时如何重新加载容器视图?

Show Segue from 按钮打开时没有导航控制器

Segue 图像到另一个视图控制器的问题

模态 Segue 表单工作表模糊背景