我有一个功能可以更改作为插座集合一部分的多个标签上的标签文字颜色。
我想将此函数从视图控制器移动到项目文件,以便我可以重用它。
如何替换self
的引用并将正确的视图控制器和插座集合传递给该函数?
func setLabelColor() {
var counter = 0
let myColor = UIColor.white
while counter < labelOutletCollection.count {
self.labelOutletCollection[counter].textColor = myColor
counter += 1
}
}
答案 0 :(得分:1)
您可以将此代码移动到一个单独的文件中,在该文件中存储全局可用的函数并使标签数组成为参数。
func setLabelColor(_ labels: [UILabel]) {
var counter = 0
let myColor = UIColor.white
while counter < labels.count {
labels[counter].textColor = myColor
counter += 1
}
}
在另一个节点上,通过将其替换为单个forEach
语句,此代码可以更加清晰:
labels.forEach { $0.textColor = .white }
您可以像这样使用此功能:
setLabelColor(labelOutletCollection)
答案 1 :(得分:0)
您可以在ViewController的按钮上进行扩展,然后随时调用它。
extension:ViewController{
func setLabelColor(myArray:[UILabel]) {
var counter = 0
let myColor = UIColor.white
while counter < myArray.count {
myArray[counter].textColor = myColor
counter += 1
}
}
}
然后你可以说
myVC.setLabelColor(myArray: labelOutletCollection)
答案 2 :(得分:0)
请尝试以下代码:
/////// Example :
@IBOutlet var testlbl: [UILabel]
viewController.setLabelColor(testlbl)
实际功能:
extension UIViewController {
func setLabelColor(_ labels: [UILabel]) {
var counter = 0
let myColor = UIColor.white
while counter < labels.count {
labels[counter].textColor = myColor
counter += 1
}
}
}
答案 3 :(得分:0)
以下是工作功能的完整代码。非常感谢the4kman。
import UIKit
func setLabelColor(setColor: UIColor, collection: [UILabel]) {
for label in collection {
label.textColor = setColor
}
}
从ViewController调用func(MyOutLetCollection是Outlet Collection):
setLabelColor(setColor: UIColor.white, collection: MyOutletCollection)