Xcode - 按下按钮时终止带有NSException类型的未捕获异常

Alp*_*rot 3 xcode button nsexception swift

我是应用程序开发的新手,我正在学习Apple的教程.我已经查看了很多关于这类错误的问题,但没有一个问题对我有所帮助.在教程中,我坚持使用"向视图添加按钮"部分,当我点击/单击按钮时,我正在尝试实现在控制台上打印的字符串.这样做时我才会收到错误.

我在Swift中的按钮代码:

import UIKit

class StarRatingControl: UIView {

    // MARK: Initialization

    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.cyanColor()

        button.addTarget(self, action: "ratingButtonTapped", forControlEvents: .TouchDown)

        addSubview(button)

    }

    override func intrinsicContentSize() -> CGSize {

        return CGSize(width: 240, height: 44)

    }

    // MARK: Button Action

    func ratingButtonTapped(button: UIButton) {

        print("Button pressed!")

    }

}
Run Code Online (Sandbox Code Playgroud)

错误:

2015-09-16 12:43:17.409 FoodTracker[954:13341] -[FoodTracker.StarRatingControl ratingButtonTapped]: unrecognized selector sent to instance 0x7f939b7a43b0
2015-09-16 12:43:17.443 FoodTracker[954:13341] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[FoodTracker.StarRatingControl ratingButtonTapped]: unrecognized selector sent to instance 0x7f939b7a43b0'
*** First throw call stack:
(
    0   CoreFoundation                      0x00000001079f59b5 __exceptionPreprocess + 165
    1   libobjc.A.dylib                     0x00000001095f4deb objc_exception_throw + 48
    2   CoreFoundation                      0x00000001079fdfdd -[NSObject(NSObject) doesNotRecognizeSelector:] + 205
    3   CoreFoundation                      0x000000010794b9fa ___forwarding___ + 970
    4   CoreFoundation                      0x000000010794b5a8 _CF_forwarding_prep_0 + 120
    5   UIKit                               0x0000000108214522 -[UIApplication sendAction:to:from:forEvent:] + 92
    6   UIKit                               0x0000000108373c06 -[UIControl sendAction:to:forEvent:] + 67
    7   UIKit                               0x0000000108373eac -[UIControl _sendActionsForEvents:withEvent:] + 273
    8   UIKit                               0x0000000108372b1c -[UIControl touchesBegan:withEvent:] + 261
    9   UIKit                               0x000000010827bf50 -[UIWindow _sendTouchesForEvent:] + 308
    10  UIKit                               0x000000010827cd4d -[UIWindow sendEvent:] + 865
    11  UIKit                               0x00000001082312ae -[UIApplication sendEvent:] + 263
    12  UIKit                               0x000000010820d36c _UIApplicationHandleEventQueue + 6693
    13  CoreFoundation                      0x0000000107921b21 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
    14  CoreFoundation                      0x0000000107917a4c __CFRunLoopDoSources0 + 556
    15  CoreFoundation                      0x0000000107916f03 __CFRunLoopRun + 867
    16  CoreFoundation                      0x0000000107916918 CFRunLoopRunSpecific + 488
    17  GraphicsServices                    0x000000010befead2 GSEventRunModal + 161
    18  UIKit                               0x000000010821299e UIApplicationMain + 171
    19  FoodTracker                         0x00000001078118dd main + 109
    20  libdyld.dylib                       0x000000010a11392d start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 
Run Code Online (Sandbox Code Playgroud)

我知道Xcode保留了我已删除的操作/出口的旧引用,因此我尝试右键单击Interface Builder中的View Controller来查找带有感叹号的项目,但我找不到任何内容(仅排除故障)到目前为止我知道的方法).我正在使用Xcode beta 7.0.任何帮助表示赞赏!

Vic*_*ler 8

你错过了":"选择器,请尝试以下方法:

button.addTarget(self, action: "ratingButtonTapped:", forControlEvents: .TouchDown)
Run Code Online (Sandbox Code Playgroud)

我希望这对你有帮助.