"无法识别的选择器发送到实例"在Xcode 8 / Swift 3中按UIButton时出错

时间:2017-07-30 01:44:16

标签: ios swift xcode

我正在创建一个应用程序,要求用户按下两个UIButtons中的一个,然后根据按下的按钮打印响应(根据按下的按钮标记确定)。但是,当我按下按钮时,我得到一个

  

无法识别的选择器已发送到实例

如何解决此问题?

这是我的代码。底部的IBAction指的是导致错误的UIButtons

import UIKit

class ViewController: UIViewController {

    let story1 = "This is the story."
    let answer1 = "No change"
    let answer2 = "Lose 1 health"
    var healthStat : Int = 10


    @IBOutlet weak var storyText: UILabel!
    @IBOutlet weak var health: UILabel!
    @IBOutlet weak var restartButton: UILabel!
    @IBOutlet weak var choiceOne: UIButton!
    @IBOutlet weak var choiceTwo: UIButton!

    var storyIndex = 1

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        storyText.text = story1
        choiceOne.setTitle("\(answer1)", for: .normal)
        choiceTwo.setTitle("\(answer2)", for: .normal)
        health.text = String("Health: \(healthStat)")

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    @IBAction func buttonPressed(_ sender: UIButton) {        
        if sender.tag == 1 {
            print("Option 1 selected")
        }
        else if sender.tag == 2 {
            print("Option 2 selected. Lose 1 health.")
            healthStat = healthStat - 1
        }

    }



}

以下是错误的全部内容:

2017-07-29 21:45:24.626 Choose Your Own Adventure[16001:694686] -[Choose_Your_Own_Adventure.ViewController buttonOnePressed:]: unrecognized selector sent to instance 0x7fc199c0cfe0
2017-07-29 21:45:24.638 Choose Your Own Adventure[16001:694686] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Choose_Your_Own_Adventure.ViewController buttonOnePressed:]: unrecognized selector sent to instance 0x7fc199c0cfe0'
*** First throw call stack:
(
    0   CoreFoundation                      0x0000000113504b0b __exceptionPreprocess + 171
    1   libobjc.A.dylib                     0x000000011037e141 objc_exception_throw + 48
    2   CoreFoundation                      0x0000000113574134 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132
    3   CoreFoundation                      0x000000011348b840 ___forwarding___ + 1024
    4   CoreFoundation                      0x000000011348b3b8 _CF_forwarding_prep_0 + 120
    5   UIKit                               0x0000000110c66d82 -[UIApplication sendAction:to:from:forEvent:] + 83
    6   UIKit                               0x0000000110deb5ac -[UIControl sendAction:to:forEvent:] + 67
    7   UIKit                               0x0000000110deb8c7 -[UIControl _sendActionsForEvents:withEvent:] + 450
    8   UIKit                               0x0000000110dea802 -[UIControl touchesEnded:withEvent:] + 618
    9   UIKit                               0x0000000110cd47ea -[UIWindow _sendTouchesForEvent:] + 2707
    10  UIKit                               0x0000000110cd5f00 -[UIWindow sendEvent:] + 4114
    11  UIKit                               0x0000000110c82a84 -[UIApplication sendEvent:] + 352
    12  UIKit                               0x00000001114665d4 __dispatchPreprocessedEventFromEventQueue + 2926
    13  UIKit                               0x000000011145e532 __handleEventQueue + 1122
    14  CoreFoundation                      0x00000001134aac01 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
    15  CoreFoundation                      0x00000001134900cf __CFRunLoopDoSources0 + 527
    16  CoreFoundation                      0x000000011348f5ff __CFRunLoopRun + 911
    17  CoreFoundation                      0x000000011348f016 CFRunLoopRunSpecific + 406
    18  GraphicsServices                    0x000000011542da24 GSEventRunModal + 62
    19  UIKit                               0x0000000110c65134 UIApplicationMain + 159
    20  Choose Your Own Adventure           0x000000010fd9efa7 main + 55
    21  libdyld.dylib                       0x00000001144a465d start + 1
    22  ???                                 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 

1 个答案:

答案 0 :(得分:6)

似乎您之前已将IBAction方法名称重命名,但它与故事板中的先前名称相关联。因此,只需断开您的操作方法并重新连接即可。