1

我需要为 iOS 实现一个手风琴控件。通过手风琴,我的意思是这样的 UI:

在此处输入图像描述

我看到了两种基本的方法来做到这一点,但我不确定选择哪一种。

方法 #1:创建一个 ViewController 容器,类似于 a UITabBarController,只是我没有在底部显示选项卡,而是绘制了垂直堆叠的按钮,当您点击一个时,相应的面板会打开并显示相应的视图控制器的视图。

方法#2:创建一个复合视图,直接向其中添加一堆视图,并根据需要显示/隐藏它们。

我该如何选择这里?是什么让我想将子单元视为视图控制器与视图?

4

1 回答 1

1

一般来说,如果我能避免它,我会尽量不要子类化UIView,而是在UIViewController子类中做所有事情。无论如何通常都需要控制器(模型/视图粘合代码、用户交互、委托内容、通知处理等),因此如果不需要自定义绘图,通常可以不使用UIView子类。

在您的情况下,我可以设想一个UIViewController代表列表条目的可重用子类。它具有以下职责:

  • 创建两个备用视图层次结构(折叠/按钮、展开/面板)
  • 在视图层次结构之间切换以响应用户交互(带/不带动画)

另一个UIViewController代表整个列表的子类。它具有以下职责:

  • 覆盖适当的方法,UIViewController使其成为容器VC
  • 根据内部模型添加/删除子 VC
  • 可能调整容器视图以响应其子 VC 中的折叠/展开事件
于 2013-06-21T00:18:44.457 回答