管理具有相同背景的几组UIView

时间:2014-04-23 02:28:45

标签: ios objective-c uiview uiviewcontroller

我正在构建一个具有复杂视图的iPhone应用程序。这个视图渲染成本很高,理想情况下,当用户与应用程序交互时,屏幕上没有“中断”。在这个视图的周围和上面,我需要显示几个控件的“集合”:按钮,标签,文本字段等。根据用户的操作,一组控件应该消失,另一组控件进入视图。管理这些过渡的最佳方法是什么?

我可以为每个州提供不同的UIViewController,但是谁拥有中心复杂视图?多个控制器可以共享相同的UIView,这样我可以在没有共享视图重新初始化/闪烁的情况下推送/呈现新控制器吗?

目前,我所拥有的是意大利面条:

if (state == x) 
    setHidden:YES
    setHidden:YES
    ... etc ...
    setHidden:NO
    setHidden:NO
    ... etc ...
} else if (state = y) {
    setHidden:NO
    setHidden:NO
    ... etc ...
    setHidden:YES
    setHidden:YES
    ... etc ...
}

它已经几乎无法管理,如果有人没有提出更好的建议,整个应用程序最终会进入一个视图控制器。

我认为: Managing multiple UIViews from one UIViewControllerSharing a UIView across multiple UIViewControllers without background flashing 我问过非常相似的问题,但我不明白如何将答案应用到我的问题中。

1 个答案:

答案 0 :(得分:0)

经过多次搜索,我在这里找到了我的问题的答案:Storyboards With Custom Container View Controllers

解决方案涉及嵌入几个容器视图'中央UIView。每个容器都通过自定义segue交换嵌入式UIViewControllers来更改加载的控件集。单个子视图行为的逻辑封装在嵌入式视图控制器中,交换它们的逻辑都在自定义视图容器类中。非常干净和可扩展。上面的网站在解释它方面做得更好。这是一个直接链接到GitHub示例的链接:https://github.com/mluton/EmbeddedSwapping

我发现一些Apple文档也很有帮助:

Creating Custom Container View Controllers