我正在构建一个具有复杂视图的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 UIViewController 和 Sharing a UIView across multiple UIViewControllers without background flashing 我问过非常相似的问题,但我不明白如何将答案应用到我的问题中。
答案 0 :(得分:0)
经过多次搜索,我在这里找到了我的问题的答案:Storyboards With Custom Container View Controllers
解决方案涉及嵌入几个容器视图'中央UIView。每个容器都通过自定义segue交换嵌入式UIViewControllers来更改加载的控件集。单个子视图行为的逻辑封装在嵌入式视图控制器中,交换它们的逻辑都在自定义视图容器类中。非常干净和可扩展。上面的网站在解释它方面做得更好。这是一个直接链接到GitHub示例的链接:https://github.com/mluton/EmbeddedSwapping
我发现一些Apple文档也很有帮助: