#iphone #xcode #macos #uiviewcontroller #unrecognized-selector
#iPhone #xcode #macos #uiviewcontroller #нераспознанный селектор
Вопрос:
По сути, я создал приложение для звуковой панели из другого приложения. Однако я продолжаю получать ту же ошибку, и я не могу понять, что не так. Я совсем новичок в xcode и искал помощь по всему Интернету. Я опубликую всю информацию, которая может потребоваться, и, надеюсь, смогу заставить это работать.
## Отчет об ошибке ##
2011-04-27 00:37:01.437 SoundBoard[11613:207] -[HBFSViewController pushBetter]: unrecognized selector sent to instance 0x693ccb0
2011-04-27 00:37:01.440 SoundBoard[11613:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[HBFSViewController pushBetter]: unrecognized selector sent to instance 0x693ccb0'
*** Call stack at first throw:
(
0 CoreFoundation 0x02553b99 __exceptionPreprocess 185
1 libobjc.A.dylib 0x026a340e objc_exception_throw 47
2 CoreFoundation 0x025556ab -[NSObject(NSObject) doesNotRecognizeSelector:] 187
3 CoreFoundation 0x024c52b6 ___forwarding___ 966
4 CoreFoundation 0x024c4e72 _CF_forwarding_prep_0 50
5 UIKit 0x002b27f8 -[UIApplication sendAction:to:from:forEvent:] 119
6 UIKit 0x0033dde0 -[UIControl sendAction:to:forEvent:] 67
7 UIKit 0x00340262 -[UIControl(Internal) _sendActionsForEvents:withEvent:] 527
8 UIKit 0x0033ee0f -[UIControl touchesEnded:withEvent:] 458
9 UIKit 0x002d63d0 -[UIWindow _sendTouchesForEvent:] 567
10 UIKit 0x002b7cb4 -[UIApplication sendEvent:] 447
11 UIKit 0x002bc9bf _UIApplicationHandleEvent 7672
12 GraphicsServices 0x02e33822 PurpleEventCallback 1550
13 CoreFoundation 0x02534ff4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ 52
14 CoreFoundation 0x02495807 __CFRunLoopDoSource1 215
15 CoreFoundation 0x02492a93 __CFRunLoopRun 979
16 CoreFoundation 0x02492350 CFRunLoopRunSpecific 208
17 CoreFoundation 0x02492271 CFRunLoopRunInMode 97
18 GraphicsServices 0x02e3200c GSEventRunModal 217
19 GraphicsServices 0x02e320d1 GSEventRun 115
20 UIKit 0x002c0af2 UIApplicationMain 1160
21 SoundBoard 0x00001b30 main 102
22 SoundBoard 0x00001ac1 start 53
)
terminate called after throwing an instance of 'NSException'
## HBFS VIEW CONTROLLER .M ##
import "HBFSViewController.h"
import <AVFoundation/AVAudioPlayer.h>
@implementation HBFSViewController
- (IBAction)pushAbout {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"About" message:@"The Mr Dolan Soundboard : Created by Charlie Gilbertson" delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
[alert show];
[alert release];
}
- (IBAction)pushAnd {
NSString *path = [[NSBundle mainBundle] pathForResource:@"And" ofType:@"aif"];
AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
theAudio.delegate = self;
[theAudio play];
}
- (IBAction)pushLad {
NSString *path = [[NSBundle mainBundle] pathForResource:@"Lad" ofType:@"aif"];
AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
theAudio.delegate = self;
[theAudio play];
}
- (IBAction)pushNoLegs {
NSString *path = [[NSBundle mainBundle] pathForResource:@"No legs" ofType:@"aif"];
AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
theAudio.delegate = self;
[theAudio play];
}
- (IBAction)pushMyDaughter {
NSString *path = [[NSBundle mainBundle] pathForResource:@"My Daughter" ofType:@"aif"];
AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
theAudio.delegate = self;
[theAudio play];
}
- (IBAction)pushLass {
NSString *path = [[NSBundle mainBundle] pathForResource:@"Lass" ofType:@"aif"];
AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
theAudio.delegate = self;
[theAudio play];
}
- (IBAction)pushYO {
NSString *path = [[NSBundle mainBundle] pathForResource:@"YO" ofType:@"aif"];
AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
theAudio.delegate = self;
[theAudio play];
}
- (IBAction)pushTape {
NSString *path = [[NSBundle mainBundle] pathForResource:@"Tape" ofType:@"aif"];
AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
theAudio.delegate = self;
[theAudio play];
}
- (IBAction)pushMySon {
NSString *path = [[NSBundle mainBundle] pathForResource:@"My Son" ofType:@"aif"];
AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
theAudio.delegate = self;
[theAudio play];
}
- (IBAction)pushNoArms {
NSString *path = [[NSBundle mainBundle] pathForResource:@"No arms" ofType:@"aif"];
AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
theAudio.delegate = self;
[theAudio play];
}
- (IBAction)pushCanDo {
NSString *path = [[NSBundle mainBundle] pathForResource:@"Can do better than you" ofType:@"aif"];
AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
theAudio.delegate = self;
[theAudio play];
}
- (IBAction)pushOr {
NSString *path = [[NSBundle mainBundle] pathForResource:@"Or" ofType:@"aif"];
AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
theAudio.delegate = self;
[theAudio play];
}
- (IBAction)pushScotch {
NSString *path = [[NSBundle mainBundle] pathForResource:@"Scotch" ofType:@"aif"];
AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
theAudio.delegate = self;
[theAudio play];
}
- (IBAction)pushAndThey {
NSString *path = [[NSBundle mainBundle] pathForResource:@"And they've got" ofType:@"aif"];
AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
theAudio.delegate = self;
[theAudio play];
}
- (IBAction)pushEgg {
NSString *path = [[NSBundle mainBundle] pathForResource:@"Egg" ofType:@"aif"];
AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
theAudio.delegate = self;
[theAudio play];
}
@end
## HBFS VIEW CONTROLLER .H ##
import <UIKit/UIKit.h>
import <Foundation/Foundation.h>
import <AVFoundation/AVAudioPlayer.h>
@interface HBFSViewController :UIViewController <AVAudioPlayerDelegate> {
IBOutlet UIBarButtonItem *aboutButton;
IBOutlet UIToolbar *toolBar;
}
- (IBAction)pushAbout;
- (IBAction)pushAnd;
- (IBAction)pushLad;
- (IBAction)pushLass;
- (IBAction)pushOr;
- (IBAction)pushScotch;
- (IBAction)pushTape;
- (IBAction)pushYO;
- (IBAction)pushEgg;
- (IBAction)pushNoLegs;
- (IBAction)pushNoArms;
- (IBAction)pushMyDaughter;
- (IBAction)pushMySon;
- (IBAction)pushCanDo;
- (IBAction)pushAndThey;
@end
Ответ №1:
Видите это сообщение об ошибке?
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[HBFSViewController pushBetter]: unrecognized selector sent to instance 0x693ccb0
Теперь посмотрите на все IBAction
методы, которые вы перечислили ( -pushAbout
и т.д.).
Вы заметите, что -pushBetter
среди них нет.
Вам нужно написать -pushBetter
метод и подключить его к UIButton
.
Ответ №2:
Похоже, вы каким-то образом отправляете вызов метода pushBetter на ваш контроллер просмотра, к которому он, по-видимому, не подготовлен (согласно вашему коду и ошибке):
-[HBFSViewController pushBetter]: unrecognized selector sent to instance 0x693ccb0'
Можете ли вы выполнить глобальный поиск по «pushBetter» и посмотреть, где он находится в вашем проекте??