为什么我的Swift函数会问我错误的变量

时间:2016-03-10 23:05:15

标签: ios swift

我在其中创建了一个结构和一个函数,我不明白为什么当我尝试调用它时它会向我询问错误的参数。这是我的函数声明:

struct UserInterfaceVariables {
    func applyCustomAnimation(view: AnimatableView, animationType: String, duration: Double, delay: Double, damping: CGFloat, velocity: CGFloat, force: CGFloat) {
        view.animationType = animationType
        view.duration = duration
        view.delay = delay
        view.damping = damping
        view.velocity = velocity
        view.force = force
    }
}

在另一个视图控制器中,我尝试调用它,它要求我输入一个" UserInterfaceVariables"参数,但这不是我要输入的参数类型...我想从我的函数声明中输入参数(" animationType"等等...)

UserInterfaceVariables.applyCustomAnimation(UserInterfaceVariables)

请注意" UserInterfaceVariables" entry(在括号中)是它所期望的参数类型...即这是它在Xcode上的样子:

enter image description here

为什么不问我函数定义中声明的参数?

编辑1 暂定解决方案:

let userInterfaceVariables = UserInterfaceVariables()
applyCustomAnimation(view: ..., .....)

2 个答案:

答案 0 :(得分:3)

问题

您正在从类型中调用实例方法。 Read more

解决方案

创建指向iGongora的结构的实例,或将您的方法标记为static

static func applyCustomAnimation(view: AnimatableView, animationType: String, duration: Double, delay: Double, damping: CGFloat, velocity: CGFloat, force: CGFloat) {
    view.animationType = animationType
    view.duration = duration
    view.delay = delay
    view.damping = damping
    view.velocity = velocity
    view.force = force
}

现在,您可以使用当前代码正确调用该方法

干杯

答案 1 :(得分:2)

那是因为你需要在使用之前初始化结构并且参数告诉你。一旦初始化结构,参数就会改变。

尝试let userInterface = UserInterfaceVariables(),然后userInterface.applyCustomAnimation(yourParameters)