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

时间:2017-08-20 18:41:04

标签: swift3 xcode8

我有一个功能可以更改作为插座集合一部分的多个标签上的标签文字颜色。

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

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

func setLabelColor() {

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

        self.labelOutletCollection[counter].textColor = myColor

        counter += 1
    }
}

4 个答案:

答案 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)