swift - 我想为每个 ViewController 设置不同的自定义堆叠按钮类的按钮文本
问题描述
我stackButtonView
像这样设置自定义。我想使用这个类来改变 buttonText 上下文的另一个类。
["1","2","3","4"] >> ["a","b","c","d"]
我认为 buttonText 设置为 global property 。我对吗?..
类种类按钮视图:UIView{
//...
let buttonText: [String] = [
"1","2","3","4"
]
public func addButtonsToStackView() {
let numberOfButtons = buttonText.count
let column = 2
let row: Int
if numberOfButtons % column != 0 {
row = (numberOfButtons / column) + 1
} else {
row = numberOfButtons / column
}
for i in 0 ..< row {
let horizontalSv = UIStackView()
horizontalSv.axis = .horizontal
//horizontalSv.alignment = .fill
horizontalSv.distribution = .fillEqually
horizontalSv.spacing = 8
for j in 0 ..< column {
if buttonText.count == i*column + j {
let hideButton = SurveyButton()
// make tranparant !
hideButton.layer.shadowColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0).cgColor
hideButton.layer.shadowOffset = CGSize(width: 0, height: 0)
hideButton.layer.shadowOpacity = 0
hideButton.layer.shadowRadius = 0
hideButton.layer.masksToBounds = false
hideButton.layer.shadowOffset = CGSize(width: 0, height: 0)
horizontalSv.addArrangedSubview(hideButton)
break
}
let button = SurveyButton()
button.setTitle("\(buttonText[ i*column + j ])",for: .normal)
button.titleLabel?.font = UIFont(name: "AvenirNext-DemiBoldItalic", size: 15)
button.tag = i*column + j + 1
button.addTarget(self, action: #selector(handleCleaningKinds(_:)), for: .touchUpInside)
horizontalSv.addArrangedSubview(button)
}
stackView1.addArrangedSubview(horizontalSv)
}
stackView.addArrangedSubview(stackView1)
}
解决方案
是的,你的方法大多会奏效。
如果您希望我提出一些更改建议,那么:
- 放置
addButtonsToStackView()
在适当的扩展类中(在您的情况下UIView
)。 - 在您将使用
buttonText
它的类中用作私有属性。 buttonText
最好将正确addButtonsToStackView()
地作为参数传递。
推荐阅读
- android - ios中的标签栏位于屏幕顶部
- python - Python从复杂字典创建子字典
- django - 在Django中选择文件后预览照片
- git - 修改先前提交的实际代码文件(c#、java 等)(使用 git)?
- ruby - cancancan的多级授权
- javascript - 棋盘Java脚本建议需要
- serialization - 使用协议缓冲区序列化/反序列化对象
- c# - 如何通过查询旧列表 c# 中的最新文件来填充新列表?
- sql-server - 使用 WITH (READPAST, ROWLOCK, XLOCK) 优化 Select-then-update 模式的并发解决方案
- tensorflow - Edge TPU Compiler: ERROR: quantized_dimension must be in range [0, 1). Was 3