单击按钮时将按钮图像从图像更改为另一个时出错

问题描述 投票:0回答:1

这是我的代码:

@IBAction func moreClicked(_ sender: UIButton) {
    if sender.currentImage == #imageLiteral(resourceName: "more_off"){
        sender.setImage(#imageLiteral(resourceName: "more_on"), for: .normal)
    }
    else
    {
        sender.setImage(#imageLiteral(resourceName: "more_off"), for: .normal)
    }

}

我收到此错误:

2018-09-05 11:03:28.708661 + 0530 musicPlayer [25450:590989] - [musicPlayer.SecondViewController more:]:无法识别的选择器发送到实例0x7fc1d4606d00

2018-09-05 11:03:28.715659 + 0530 musicPlayer [25450:590989] *由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [musicPlayer.SecondViewController more:]:无法识别的选择器发送到实例0x7fc1d4606d00'*首先throw call stack:(0 CoreFoundation 0x00000001087ea1e6 exceptionPreprocess + 294 1 libobjc.A.dylib 0x0000000107a36031 objc_exception_throw + 48 2 CoreFoundation 0x000000010886b784 - [NSObject(NSObject)doesNotRecognizeSelector:] + 132 3 UIKit 0x0000000108e956db - [UIResponder doesNotRecognizeSelector:] + 295 4 CoreFoundation 0x000000010876c898 ___forwarding_ + 1432 5 CoreFoundation 0x000000010876c278 _CF_forwarding_prep_0 + 120 6 UIKit 0x0000000108c683e8 - [UIApplication sendAction:to:from:forEvent:] + 83 7 UIKit 0x0000000108de37a4 - [UIControl sendAction:to:forEvent:] + 67 8 UIKit 0x0000000108de3ac1 - [UIControl _sendActionsForEvents:withEvent:] + 450 9 UIKit 0x0000000108de2a09 - [UIControl touchesEnded :withEvent:] + 580 10 UIKit 0x0000000108cdd0bf - [UIWindow _sendTouchesForEvent:] + 2729 11 UIKit 0x0000000108cde7c1 - [UIWindow sendEvent:] + 4086 12 UIKit 0x0000000108c82310 - [UIApplication sendEvent:] + 352 13 UIKit 0x00000001095c36af dispatchPreprocessedEventFromEventQueue + 2796 14的UIKit 0x00000001095c62c4 __handleEventQueueInternal + 5949 15的CoreFoundation 0x000000010878cbb1 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION + 17 16的CoreFoundation 0x00000001087714af __CFRunLoopDoSources0 + 271 17的CoreFoundation 0x0000000108770a6f __CFRunLoopRun + 1263 18的CoreFoundation 0x000000010877030b CFRunLoopRunSpecific + 635 19 GraphicsServices 0x000000010ff76a73 GSEventRunModal + 62 20 UIKit 0x0000000108c67057 UIApplicationMain + 159 21 musicPlayer 0x000000010711cc27 main + 55 22 libdyld.dylib 0x000000010cd4f955 start + 1)libc ++ abi.dylib:以NSException类型的未捕获异常终止

ios swift xcode9.2 swift4.2
1个回答
0
投票

2018-09-05 11:03:28.708661 + 0530 musicPlayer [25450:590989] - [musicPlayer.SecondViewController more:]:无法识别的选择器发送到实例0x7fc1d4606d00

上面的消息意味着SecondViewController希望有一个名为more:的方法,但是当触发该动作并且该类的实例试图找到more:方法时,它无法识别这样的方法并且应用程序崩溃。

我认为这里发生的是:你已经将你的Xib / Storyboard中的动作拖到你的VC类并命名为more:。在此之后,您已手动将其重命名(不是重构>重命名)到moreClicked:。这样,SecondViewController的IBAction仍然指向被称为more:的方法,但是你的类不再有这样的方法了。

所以基本上,您需要从xib / storyboard中删除已存在的IBAction引用,并使用新方法重新连接:moreClicked:,所有这些都应该正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.