将函数从 ViewController 移动到 swift 文件,以便它可以重复使用

Move function from ViewController to swift file so it's reusable

我有一个功能可以更改属于奥特莱斯系列的几个标签上的标签文本颜色。

我想将这个函数从视图控制器移动到一个项目文件中,以便我可以重用它。

如何替换对 self 的引用并将正确的视图控制器和插座集合传递给函数?

func setLabelColor() {

    var counter = 0
    let myColor = UIColor.white
    while counter < labelOutletCollection.count {

        self.labelOutletCollection[counter].textColor = myColor

        counter += 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 { [=11=].textColor = .white }

您可以像这样使用此功能:

setLabelColor(labelOutletCollection)

您可以在 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)

尝试以下代码:

/////// 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
        }
    }
}

这里是工作函数的完整代码。非常感谢the4kman。

import UIKit

func setLabelColor(setColor: UIColor, collection: [UILabel]) {

for label in collection {

    label.textColor = setColor

   }
}

从您的 ViewController 调用函数(MyOutLetCollection 是一个 Outlet Collection):

setLabelColor(setColor: UIColor.white, collection: MyOutletCollection)