定义一个可以在运行时在视图之间切换的故事板

Posted

技术标签:

【中文标题】定义一个可以在运行时在视图之间切换的故事板【英文标题】:Define a storyboard that could switch between views at runtime 【发布时间】:2018-11-29 13:44:16 【问题描述】:

我想实现一个简单的用户界面,它有一个开关按钮,当打开开关时,应用程序显示一个视图,当关闭时显示另一个视图。 (底部还有一个主按钮,无论显示哪个UIView,都应该始终可见)

我正在考虑情节提要,我使用一个UIVIewController,然后定义两个UIView 组件,每个组件代表一个视图。

所以,简而言之,我想在运行时在 switch 按钮Main 按钮 之间显示不同的 UIView。

但是我卡住了,我不确定如何使用上面计划的解决方案默认显示UIView 之一。 (可能我不确定这是否是做我想要实现的目标的正确方法。)有人可以指导我吗?

【问题讨论】:

这两个视图包含什么?我认为您可以在视图控制器本身中创建视图并根据开关状态隐藏/显示。 @hardik parmar,每个 UIView 都包含不同 UI 元素的不同布局。谢谢,但是如果我按照您的建议进行操作,那么视图控制器将一团糟。我会尽量让它更有条理,这就是为什么我分成两个 UIViews 您是否尝试过使用容器视图?您可以将它们从库中拖到情节提要中,然后像普通的UIViewUISwitch 等一样为它们创建出口——这样它们就可以很容易地隐藏起来。它们通过 segue 连接到另一个视图控制器,并且应该显示该视图控制器的内容。 已经有这种 UI 的解决方案,在您的案例中,UITabBarController 带有 2 个选项卡。只需要修改TabBar的设计即可。developer.apple.com/documentation/uikit/uitabbarcontroller @LoVo 但我不需要标签。 【参考方案1】:

在情节提要中,您可以添加两个容器视图。这些基本上是作为子级添加的 UIViewController。根据开关,您可以使用 isHidden 参数之一或另一个隐藏/显示。

【讨论】:

【参考方案2】:

您可以使用 2 种不同的方法:

    交换视图:这可以通过使用UIView 动画轻松完成,例如method transition(from:to:duration:options:completion:) 使用 Wesley 已经说过的满足视图控制器 API 虽然第一个可以解决问题,但如果您的视图具有完全不同的行为和业务逻辑,则最好使用 2 个不同的视图控制器并使用容器视图。更多信息请点击here和here。

【讨论】:

以上是关于定义一个可以在运行时在视图之间切换的故事板的主要内容,如果未能解决你的问题,请参考以下文章

根据方向切换故事板

在xcode中自定义视图中给出高度后刷新故事板视图控制器

iOS 更改故事板

你如何摆脱swift中主要故事板的代码?

becomeFirstResponder 第二次不显示键盘(ios 6 + 故事板)

故事板标签约束