我需要为 iOS 实现 Accordion 控件。通过 Accordion ,我的意思是像这样的 UI:
我看到有两种基本方法可以做到这一点,但我不确定该选择哪一种。
方法 #1:创建一个 ViewController 容器,类似于 UITabBarController
,不同之处在于我没有在底部显示选项卡,而是绘制了一堆垂直按钮,当你点击一个按钮时,相应的面板打开并显示相应的 View Controller 的 View 。
方法#2:创建一个复合 View ,直接向其中添加一堆 View ,并根据需要显示/隐藏它们。
这里如何选择?是什么让我想要将子单元视为 View Controller 而不是 View ?
最佳答案
一般来说,如果我能避免它,我会尽量不子类化 UIView
而是在 UIViewController
子类中做所有事情。无论如何通常都需要一个 Controller (模型/ View 粘合代码、用户交互、委托(delegate)内容、通知处理等),因此如果不需要自定义绘图,通常可以不使用 UIView
子类.
在您的情况下,我可以设想一个可重用的 UIViewController
子类,它代表一个列表条目。它具有以下职责:
- 创建两个备用 View 层次结构(折叠/按钮,展开/面板)
- 根据用户交互(有/无动画)在 View 层次结构之间切换
还有另一个代表整个列表的 UIViewController
子类。它具有以下职责:
- 从
UIViewController
中覆盖适当的方法,使其成为容器 VC - 根据内部模型添加/删除子 VC
- 可能调整容器 View 以响应其子 VC 中的折叠/展开事件
关于ios - 我需要 ViewController 容器还是复合 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17225213/