1

我在这里使用简单的英语。我有这个很棒的应用程序,有多个选项卡,每个选项卡(UIViewController 的子类)都有内容。其中一个选项卡内部有一个按钮(除其他外),并且具有很多功能。该按钮很漂亮(我在网上找到的 UIGlossyButton 的子类)并显示一个麦克风如果您按下按钮它(选项卡)会记录您的声音并自动停止(通过检测音量级别/超时)

  • 录制时,标签控制器在按钮顶部显示一个 LED 仪表
  • 录制后,该按钮被替换为显示扬声器的 anthor 按钮
  • 轻按扬声器会播放您的声音
  • 在扬声器上滑动可让您“删除”重置回麦克风

这个“小部件”很棒,我喜欢它。现在我想把这个东西放在其他选项卡中,以及整个应用程序中的其他东西。这看起来像是抽象而不是复制/粘贴的候选者。

让我感到沮丧的是:我应该将所有这些功能(显示/隐藏/交换按钮、录制声音、分析声音级别的逻辑)打包到一个小部件中吗?如果是这样,我应该使用多少个类以及每个子类应该使用哪些类?最后,在 Interface Builder 中,我应该将哪个对象拖到选项卡内的情节提要上,以及我应该在“自定义类”框中键入哪些类。

4

1 回答 1

3

对于单个 UIView 子类来说,这听起来像是很多事情。我绝对会将其拆分为一系列类,或者至少在扩展的 UIGlossyButton 和关联的 UIViewController 之间进行拆分。

按钮的职责应该是:能够绘制自己,知道它何时被按下,并在对其执行操作时执行最少的逻辑(例如向 UIViewController 发送消息)。

将按钮本身视为 MVC 的视图。然后,控制器将真正知道要为 UI 操作背后的所有智能做什么。然后像声音计或语音文件这样的东西,可以选择地表示为模型对象/类。有时我发现在 iOS 中创建显式模型类是多余的,所以我只使用具有多态性的普通 Cocoa 类(如 NSDictionary)来处理来自控制器的模型内容。

于 2012-05-26T02:20:04.050 回答