在我的应用程序中,我严重依赖于不同的视图类型,它们将拥有不同的值.例如,对于一个按钮,我需要它有4个额外的变量,我实现它像这样:
import UIKit
class ActionButton: UIButton {
var row = 0
var action = 0
var appDataId = ""
var companyId = ""
}
Run Code Online (Sandbox Code Playgroud)
我使用ActionButton而不是UIButton.
但是,对于不同类型的视图,例如标签按钮等,我需要很多这些,这可能会使项目复杂化.
我的问题是,这是一个好的做法吗?有没有其他方法可以达到相同的效果?
谢谢!
方法0:你已经向我们展示的工作正常:D
那就是:继承现有的类并使用你的vars进行自定义.您只需复制粘贴该按钮或将新创建的按钮类设置为ActionButton.
但在我看来,有更多有趣的解决方案.
方法1:创建UIButton扩展并使用关联对象代替存储的变量.
还有另一种方式:
方法1.5(推荐的解决方案):
做一个扩展UIView.UILabel和UIButton以及许多其他UI元素都继承自它.您UIView继承的所有类都可以访问您在扩展中添加的内容UIView.
奖励方法(如果您想要或需要更进一步):创建自定义UIButton类并使用IBInspectables!
然后,您将能够直接从"界面"构建器修改变量,这非常便于测试!
例:
//
// CustomButton.swift
import UIKit
@IBDesignable
class CustomButton: UIButton {
@IBInspectable var cornerRadius: CGFloat = 3.0 {
didSet {
setupView()
}
}
@IBInspectable var fontColor: UIColor = UIColor.whiteColor() {
didSet {
self.tintColor = fontColor
}
}
override func awakeFromNib() {
setupView()
}
override func prepareForInterfaceBuilder() {
super.prepareForInterfaceBuilder()
setupView()
}
func setupView() {
self.layer.cornerRadius = cornerRadius
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1001 次 |
| 最近记录: |