2017-07-30 25 views
1

我正在製作一個應用程序,要求用戶按下兩個UIButtons中的一個,然後根據按下哪個按鈕來打印響應(根據按下按鈕的標籤)。然而,當我運行按鈕,我得到一個在Xcode 8中按下UIButton時出現「無法識別的選擇器發送到實例」錯誤

Unrecognized selector sent to instance

我該如何解決?

這是我的代碼。該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) 
+0

錯誤消息顯示'buttonOnePressed:',但您的swift代碼沒有名爲'buttonOnePressed:'的方法。您可能需要將按鈕動作重新連接到'buttonPressed:'或將'buttonPressed(_ :)'重命名爲'buttonOnePressed(_ :)'。 – OOPer

回答

4

好像你以前它是重命名IBAction方法名不同,它連接到故事板中的以前的名稱。因此,請斷開您的操作方法並適當地重新連接。

相關問題