Почему моя функция Swift задает мне неправильные переменные

1 Léonard Bonfils [2016-03-11 02:05:00]

Я создал структуру и функцию внутри нее, и я не понимаю, почему он спрашивает меня о неправильных параметрах, когда я пытаюсь назвать это. Вот мое объявление функции:

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" (в круглых скобках) является типом ожидаемого параметра... т.е. Это выглядит так, как на Xcode:

enter image description here

Почему это не спрашивает меня о параметрах, объявленных в определении моей функции?

EDIT 1 Ориентировочное решение:

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

ios swift


2 ответа


3 Решение EridB [2016-03-11 02:24:00]

вопрос

Вы вызываете метод экземпляра из типа. Прочитайте больше

Решение

Либо создайте экземпляр структуры, как указано в 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
}

Теперь вы сможете правильно вызвать метод с помощью вашего текущего кода

ура


2 iGongora [2016-03-11 02:13:00]

Это потому, что вам нужно инициализировать структуру перед ее использованием и параметр говорит вам. После того, как вы запустите свою структуру, параметры изменятся.

Попробуйте let userInterface = UserInterfaceVariables() а затем userInterface.applyCustomAnimation(yourParameters)