【发布时间】:2014-05-09 02:26:06
【问题描述】:
我正在尝试使用一个类别来自定义我的按钮,但我不希望我的项目中的所有按钮都使用这个类别。有没有办法让按钮知道它应该/不应该使用类别(比如某种 bool isUsingCategory)。如果没有,最好的方法是什么?我会将它子类化,但我听说子类化 UIButton 是个坏主意。有没有办法从某些对象中排除类别?谢谢!
编辑:我现在的工作是在我的控制器中运行一种特殊的方法来绘制按钮,但我不认为这很好地遵循了 MVC。
【问题讨论】:
-
如果您只是自定义外观,您可以使用
appearance代理。但不幸的是,这将影响所有 UIButton 对象。区分的最好方法是子类。为什么这应该是不好的? -
哦,我想到了另一种方法。制作自定义 UIView 子类。我们称它为 MyButtonContainer。使您想要自定义 MyButtonContainer 的子视图的所有按钮,它本身可以是不可见的(清除),因此它不会影响任何事情。现在
appearance代理可以选择正确的按钮。 -
嗯,这完全是波什(正如其中一位 cmets 所说)。如果你继承 UIButton,它就不是 UISystemButton。但这将是一个 UICustomButton,这到底有什么问题?
-
无需担心所有实例都使用一个类别。该类别只是添加了将“self”理解为被扩展类的实例的方法。不调用这些方法就等于不使用分类。
标签: objective-c cocoa-touch model-view-controller uibutton objective-c-category