Ошибка при изменении изображения кнопки с изображения на другое при нажатии на кнопку - PullRequest
0 голосов
/ 05 сентября 2018

Вот мой код:

@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 ' * Стек первого вызова вызова: (0 CoreFoundation 0x00000001087ea1e6 exceptionPreprocess + 294 1 libobjc.A.dylib
0x0000000107a36031 objc_exception_throw + 48 2 CoreFoundation
0x000000010886b784 - [NSObject (NSObject) делает NotRecognizeSelector:] + 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: до: от: forEvent:] + 83 7 UIKit 0x0000000108de37a4 - [UIControl sendAction: to: forEvent:] + 67 8 UIKit 0x0000000108de3ac1 - [UIControl _sendActionsForEvents: withEvent:] + 450 9 UIKit 0x0000000108de2a09 - [UIControl трогаетEnded: withEvent:] + 580 10 UIKit 0x0000000108cdd0bf - [UIWindow _sendTouchesForEvent:] + 2729 11 UIKit 0x0000000108cde7c1 - [UIWindow sendEvent:] + 4086 12 UIKit
0x0000000108c82310 - [UIApplication sendEvent:] + 352 13 UIKit
0x00000001095c36af рассылкаПереработаноEventFromEventQueue + 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 графических сервисов
0x000000010ff76a73 GSEventRunModal + 62 20 UIKit
0x0000000108c67057 UIApplicationMain + 159 21 musicPlayer
0x000000010711cc27 main + 55 22 libdyld.dylib
0x000000010cd4f955 start + 1) libc ++ abi.dylib: заканчивается необработанное исключение типа NSException

1 Ответ

0 голосов
/ 05 сентября 2018

2018-09-05 11: 03: 28.708661 + 0530 musicPlayer [25450: 590989] - [musicPlayer.SecondViewController more:]: нераспознанный селектор отправлен на экземпляр 0x7fc1d4606d00

Приведенное выше сообщение означает, что SecondViewController ожидает наличия метода с именем more:, но когда действие инициируется и экземпляр этого класса пытается найти метод more:, он не распознает такой метод, и приложение вылетает.

Я думаю, что здесь произошло следующее: вы перетащили действие из своей Xib / Storyboard в класс VC и назвали его more:. После этого вы переименовали его вручную (не Refactor> Rename) в moreClicked:. Таким образом, IBAction SecondViewController все еще указывает на метод, который называется more:, однако у вашего класса такого метода больше нет.

Таким образом, вам нужно удалить уже существующую ссылку на IBAction из вашей xib / storyboard и заново подключить ее с помощью нового метода: moreClicked:, и все должно работать.

...