2

我是新手,我正在努力解决子类化的实现。

我了解创建新文件并使其成为任何父类的子类的基本原理(在这种情况下,我选择了 UITextField)。我创建了自己的子类,然后将相应 UITextField 对象的身份检查器中的类更改为我的新类,简称为“myTextField”。我已经使用 SO 上其他地方的代码来修改占位符文本的表示,并且它工作正常(来自子类对象)。

我(在故事板中)将 viewController 设置为我的子类 textFields 的代表。

并根据需要触发适当的方法,例如在视图控制器 .m 文件中的“返回”按钮上激活 textFieldShouldReturn 方法。

但是这些方法只在视图控制器上触发,而不是在我的子类中。在视图控制器对它们做任何事情之前,我想访问这些。

换个说法,我仍然希望它按原样触发,但我也想在子类对象中执行一个操作,但在主文件中仍然有完整的方法触发。例如,当用户点击返回时,我希望子类对象直接处理键盘的放下,但仍然触发 viewcontrollers 方法。

这只是一个例子,可能是一个很差的例子,但想法是,我不一定要带走主视图控制器的原始方法的功能,我仍然希望它是委托;我只希望子类对象文件也能做一些工作。在此示例中,可能是放下键盘并播放叮当声。正如我所说,这是一个例子,行动本身是无关紧要的。但是让动作在我想要的地方执行是问题所在。

我知道我没有正确地理解子类化,如果我错过了一些非常基本的东西,我很抱歉。

我会很感激这方面的任何指示,谢谢

4

1 回答 1

2

听起来好像您对子类化有很好的掌握,但可能是委派问题。

委托的意义在于有一个(唯一的)对象代表另一个对象执行某些工作。当您需要多个对象来对某事做出反应时,通知是一个更好的策略。

对于您的示例,我可以看到两个选项。一种方法是让委托显式调用子类中的方法。另一种方法是让委托方法发布自定义通知,然后任何想要对此做出反应的对象。

在这些之间进行选择将取决于您希望解决方案的一般性或具体性。

于 2012-11-24T14:03:36.323 回答