iOS在子视图之间切换常见模式[关闭]

Posted

技术标签:

【中文标题】iOS在子视图之间切换常见模式[关闭]【英文标题】:iOS switching between subviews common pattern [closed] 【发布时间】:2016-03-21 02:22:25 【问题描述】:

ios 应用程序中的小子视图之间切换是否有任何通用模式?例如,我正在制作某种图像编辑应用程序,并且我有像 panel view in interface builder 这样的仪表板视图。

当按下底部面板中的相应按钮时,我希望在此视图的右上方区域更改带有滑块和图标的不同视图。在这种情况下哪种方法更好? 让每个子视图都有一个 xib 并在每次按下按钮时加载它们?

在 Interface Builder 中制作子视图并在按下按钮时隐藏除一个之外的所有子视图?也许有一些方便的方法可以做到这一点? 我正在使用自动布局;我应该如何处理约束以使内容居中并使其填充其区域?

【问题讨论】:

【参考方案1】:

我的首选方法是:

1) 在视图控制器中创建容器视图

2) 为每个子视图创建独立的视图控制器(如果您的子视图是交互式的并且有自己的一些控件和逻辑,这很有意义)。我喜欢在我的故事板中创建它们,给它们一个自定义大小以帮助您在 Interface Builder 中设计它们,然后使用 [storyboard instantiateViewControllerWithIdentifier:] 在代码中加载它们。

3) 添加子视图控制器,确保可见的位于顶部(通过执行类似[self.containerView bringSubviewToFront:childVC1.view] 的操作。

4) 在子 VC 之间切换时,将当前子 VC 的视图置于前面。

5)。对于父 VC 和子 VC 之间的通信,您可以使用委托,以防止保留循环。

【讨论】:

谢谢,这很有趣。那你能回答一些小问题吗?也许对整个仪表板做同样的事情会更好?我在单独的 xib 中制作了它,并在按下主控制器上的按钮后加载它。对于每个加载的带有控制器的“小”子视图,我应该在代码中进行布局约束吗? 我认为在类似情况下我不必在代码中设置任何约束(这很幸运,因为这样做很痛苦)。只要你在IB中布局你的子VC,并且正确设置子VC的视图框架,你应该是好的。 我不确定您所说的“对整个仪表板做同样的事情”是什么意思。您的意思是每个子 VC 中的所有按钮都有一份副本吗? 不,我试图解释的是,我将面板(在附加的屏幕截图中)作为 xib 中的单独视图(没有控制器)并将其加载到主控制器中。我在问我是否应该将此面板放在单独的控制器中,并为每个“子面板”制作单独的控制器。但我认为答案是肯定的,所以我已经做到了,现在我的故事板看起来像这样 postimg.org/image/e7t7pc4gh 。现在看起来很方便:)如果我做得对..

以上是关于iOS在子视图之间切换常见模式[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

使用分段控制在 ios 中的视图之间切换视图

使用 iOS 自动布局在子视图控制器与其父视图之间建立约束

UIPickerView 委托未在子视图中调用

链 UIViewControllers 推送和弹出动画与 UINavigationController 关闭/呈现模式视图?

iOS开发系列--视图切换

MFC如何在切换视图时关闭无模式对话框