此视频中使用的设计模式是什么?

时间:2015-03-21 20:07:11

标签: ios objective-c inheritance uipickerview

我最近观看过如何创建自定义UIPickerView的this video教程,并且我在项目中成功实现了UIPickerView。但是,我想对我的应用程序中出现的UIPickerView进行一些更改。

对于初学者来说,视频中概述的自定义UIPickerView是子类化的一个例子吗?

其次,是否可以修改自定义UIPickerView的实例以使其具有除Done之外的其他文本标签?如果是这样,我是否需要修改KCModalPicker.h/m文件?

因此,问我第三个问题,如果我修改了KCModalPicker.h/m文件,那么我项目中每个类的其他实例都将保留更改,那么保持基类的方法是什么,但是能够为类添加自定义,所以UIPickerView有多少列依赖于被禁用的实例,而不依赖于KCModalPicker.h/m文件?

更新 我所指的ModalPicker类的源代码可以在这里找到,

https://github.com/subdigital/nsscreencast/tree/master/025-custom-picker-component-part-1

1 个答案:

答案 0 :(得分:0)

我不想观看视频以回答您的问题,并怀疑其他人也有同样的感受。 (我讨厌观看开发视频,因为它们漫长而乏味。我不需要有人详细解释如何做某事。让我跳到我感兴趣的部分。)你应该描述一下使用的方案,以便我们可以回答您的问题。

如果该视频描述了一个类KCModalPicker,它可能是UIPickerView的子类,或者它可能包含一个选择器视图(这将是一个" has-a"关系,而不是" is-a&# 34;关系.KCModalPicker可能是一个模态视图控制器,在其中有一个选择器视图。)

如果你想修改一个类,比如KCModalPicker,但是不想改变所有实例,那么是的,子类化可能是一个很好的方法。创建一个名为MyModalPicker的子类,它继承自KCModalPicker并根据需要更改行为。

编辑:

在查看Github上的文件后,看起来该项目有一个类BSModalPickerView,它是UIView的子类,并包含一个UIPickerView。如上所述,这是一个" has-a"关系。 BSModalPickerView类在其内部有一个它管理的选择器视图。所以不,这个项目似乎没有使用子类化。

演示程序有一个视图控制器,它使用BSModalPickerView方法presentInView:withBlock:,将选择器显示为视图控制器主视图的子视图。

看起来还有一个方法presentInWindowWithBlock:,它将直接在窗口中显示选择器视图。

如果您想修改某些BSModalPickerViews的行为并让其他人保持独立,那么创建自己的BSModalPickerView自定义子类将是一种合理的方法。您还可以修改根BSModalPickerView以获得更多设置选项(在init方法中传递的额外属性或参数)。

顺便说一下,你的问题是关于KCModalPicker.h的问题,但我在你发布的github链接中看到的类是BSModalPickerView。不确定是什么差异。