Ожидаемое выражение в списке выражений

Я пытаюсь использовать некоторый код для создания приложения для начинающих с использованием Xcode 7.3 и Swift 2.2, но я продолжаю сталкиваться с одной и той же проблемой. Я использовал подобный код раньше, но это просто не сработает. Появляются сообщения об ошибках «Ожидается разделитель», и когда я исправляю это, одно и то же сообщение появляется снова и снова. Я также получаю «Ожидаемое выражение в списке выражений» и «отсутствует аргумент для параметра« действие »в вызове». Все они вызваны одной и той же строкой.

   button.addTarget(self, action: #selector(RatingControl.ratingButtonTapped(_:)), forControlEvents: .TouchDown)

Вот код

import UIKit

class RatingControl: UIView {

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

        let button = UIButton(frame: CGRect(x: 0, y: 0, width: 44, height: 44))
        button.backgroundColor = UIColor.redColor()
        button.addTarget(self, action: #selector(RatingControl.ratingButtonTapped(_:)), forControlEvents: .TouchDown)
        addSubview(button)
    }

    override func intrinsicContentSize() -> CGSize {
        return CGSize(width: 240, height: 44)
    }

    func ratingButtonTapped(button: UIButton) {
        print("Button pressed")
    }
}

person Gubby    schedule 22.03.2016    source источник
comment
В какой строке появляется сообщение об ошибке? Этот код без проблем компилируется в моей системе.   -  person Scott Thompson    schedule 23.03.2016
comment
#selector - это Swift 2.2, который поставляется с Xcode 7.3 - может быть, вам нужно обновить Xcode?   -  person Eric Aya    schedule 23.03.2016
comment
@ScottThompson появляется в строке, запускающей button.addTarget, ошибка вызвана действием:   -  person Gubby    schedule 23.03.2016
comment
@ЭрикД. Только что попробовал. #selector теперь окрашен, так что это хорошо, но те же самые ошибки все еще возникают.   -  person Gubby    schedule 24.03.2016
comment
Ваш Xcode сбит с толку после обновления. Помогите: Продукт › Очистите, а также очистите производные данные. Это должно сработать.   -  person Eric Aya    schedule 24.03.2016
comment
@ЭрикД. Спасибо, мой код теперь работает правильно.   -  person Gubby    schedule 24.03.2016


Ответы (5)


Вам нужно очистить проект.

Нажмите Shift + + K

person Oleg Tsibulevskiy    schedule 19.05.2016

#selector — это Swift 2.2, который поставляется с Xcode 7.3, поэтому вам необходимо обновить Xcode до последней версии.

После этого, если ваш Xcode запутался после обновления, помогите ему: перейдите в меню «Продукт»> «Очистить», а также при необходимости очистите папку «производные данные».

Примечание: это ответ, сделанный из моих комментариев к OP, который решил их проблему.

person Eric Aya    schedule 06.06.2016

Вы можете попробовать следующий код:

button.addTarget(self, action: "ratingButtonTapped:", forControlEvents: .TouchDown)
person Manish Pandey    schedule 18.04.2016

У меня была аналогичная проблема, когда я создал UIButton следующим образом:

let button = UIButton()
button.frame = CGRect(x: 0.0, y: 0.0, width: size, height: size)

Для меня ошибка исчезла, когда я изменил способ создания кнопки:

let button = UIButton(type: .System)
button.frame = CGRect(x: 0.0, y: 0.0, width: size, height: size)

Ни очистка проекта, ни удаление производных данных не устранили проблему для меня. Я использовал Xcode 7.3.1.

person Charlie Hitchcock    schedule 05.06.2016

Вы должны очистить проекты:

Продукт -> Чистый

person DevMachine    schedule 06.08.2018