如何将UIControl作为函数参数传递?

时间:2018-03-14 09:56:56

标签: ios swift uikit

例如,我有一个功能。在这个函数作为参数我必须传递一些UIControl像UILabel,UITextFile,UIButton等。我该怎么做:

func passDicData(controll : UIControll){
    //code
}

用过:

passDicData(UILabel)

4 个答案:

答案 0 :(得分:2)

//使用UIView

func passDicData(control:UIView){
        //code
}


passDicData(UILabel(frame: .zero))

答案 1 :(得分:0)

UIControl,而不是UIControll

此外,UILabelUITextFieldUIButton的共同祖先是UIView,例如请参阅此scheme

func passDicData(view: UIView){
    //code
}

答案 2 :(得分:0)

你可以这样使用,

func passDicData(control: AnyClass){
    print(control.class())
}

并按照这种方式调用,

passDicData(control: UILabel.self)

答案 3 :(得分:0)

是的,您可以使用UIControl作为参数:

func passDicData(controll : UIControl){
    //code
}

但是, NOT 可以像这样调用此函数:

passDicData(UILabel)

那是因为

  1. 在您的示例中,您没有创建UILabel的实例,而只是使用其类型。要传递实例,您应首先初始化UILabel,例如passDicData(UILabel())
  2. UILabel不是UIControl
  3. 的子类

    相反,您可以使用UIViewUIResponder,它们都是UILabel

    的超类
    func passDicData(responder : UIResponder){
        //code
    }
    
    passDicData(UILabel())