在多个控制器中重用相同的委托方法?

时间:2014-07-05 16:58:18

标签: ios objective-c delegates dry reusability

我有一个UITextFieldDelegate方法shouldChangeCharactersInRange在几个视图控制器中完全相同,所以我只需将其复制粘贴到符合UITextFieldDelegate的每个视图控制器中。我喜欢坚持DRY,在这里我在许多视图控制器中都有相同的代码。是否有可能重用委托方法以及有什么方法可以做到这一点,或者这是唯一/最佳方式以及为什么?

3 个答案:

答案 0 :(得分:3)

创建一个UIViewController的子类,它只实现你想要的委托方法。将其设置为项目中需要使用委托方法的所有视图控制器的父类。

除此之外,您还可以尝试查看类别。在UIViewController上创建一个您想要的任何类别。将要实现的委托方法添加到此类别。现在,您#import此类别将实现委托方法的所有视图控制器。

答案 1 :(得分:2)

您可以创建一个父对象类,所有视图控制器都从该类继承。将委托方法代码放在父对象实现中。

答案 2 :(得分:2)

您可以创建符合UITextFieldDelegate并继承自NSObject的对象。

然后,在每个视图控制器上,您可以创建此对象的实例,将其存储在属性上,并将UITextField委托分配给此对象。