将自定义变量添加到UIButton之类的现有类的正确方法是什么?

时间:2016-05-11 14:39:41

标签: ios swift

在我的应用中,我严重依赖于不同的视图类型,它们将拥有不同的值。例如,对于一个按钮,我需要它有4个额外的变量,我实现它如下:

import UIKit

class ActionButton: UIButton {

    var row = 0
    var action = 0
    var appDataId = ""
    var companyId = ""

}

我使用ActionButton而不是UIButton。

但是我需要很多这些用于不同类型的视图,比如标签按钮等,这可能会使项目复杂化。

我的问题是,这是一个好习惯吗?有没有其他方法可以达到同样的效果?

谢谢!

1 个答案:

答案 0 :(得分:7)

方法0:您已经向我们展示的工作正常:D

这就是:继承现有的类并使用你的vars进行自定义。您只需复制粘贴该按钮或将新创建的按钮类设置为public static String sampleFolder = System.getProperty("user.dir") + "//Reports//output//TestCasesHtmlReports//";

但我认为还有更多有趣的解决方案。

方法1:创建UIButton扩展并使用关联对象代替存储的变量。

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Extensions.html

还有另一种方式:

Extensions May not contain Stored properties

方法1.5(推荐的解决方案):

扩展ActionButton。 UILabel和UIButton以及许多其他UI元素都继承自它。从UIView继承的所有类都可以访问您在UIView扩展名中添加的内容。

奖励方法(如果您希望或需要更进一步):创建自定义UIButton类并使用IBInspectables!

然后,您就可以直接从“界面”构建器修改变量,这非常便于测试!

示例:

UIView