2010-07-28 1 views
0

Я динамически создаю кнопки в приложении для iPhone.Проблема с динамической кнопкой: непризнанный селектор отправлен в экземпляр


UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 

[btn setTitle:atitle forState:UIControlStateNormal]; 

[btn addTarget:self action:@selector(buttonTouched:) forControlEvents:UIControlEventTouchUpInside]; // handle touch 

[buttons addObject:btn]; 


---------- 

-(void) buttonTouched:sender{ 
} 

---------- 

-[NSCFString buttonTouched:]: unrecognized selector sent to instance 0x592ef70 
2010-07-28 08:59:43.551 DataManager[1707:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSCFString buttonTouched:]: unrecognized selector sent to instance 0x592ef70' 
*** Call stack at first throw: 
(
    0 CoreFoundation      0x02398919 __exceptionPreprocess + 185 
    1 libobjc.A.dylib      0x024e65de objc_exception_throw + 47 
    2 CoreFoundation      0x0239a42b -[NSObject(NSObject) doesNotRecognizeSelector:] + 187 
    3 CoreFoundation      0x0230a116 ___forwarding___ + 966 
    4 CoreFoundation      0x02309cd2 _CF_forwarding_prep_0 + 50 
    5 UIKit        0x002bce14 -[UIApplication sendAction:to:from:forEvent:] + 119 
    6 UIKit        0x003466c8 -[UIControl sendAction:to:forEvent:] + 67 
    7 UIKit        0x00348b4a -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527 
    8 UIKit        0x003476f7 -[UIControl touchesEnded:withEvent:] + 458 
    9 UIKit        0x00534070 _UIGestureRecognizerUpdateObserver + 3687 
    10 CoreFoundation      0x02379d1b __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 27 
    11 CoreFoundation      0x0230e987 __CFRunLoopDoObservers + 295 
    12 CoreFoundation      0x022d7c17 __CFRunLoopRun + 1575 
    13 CoreFoundation      0x022d7280 CFRunLoopRunSpecific + 208 
    14 CoreFoundation      0x022d71a1 CFRunLoopRunInMode + 97 
    15 GraphicsServices     0x02bfd2c8 GSEventRunModal + 217 
    16 GraphicsServices     0x02bfd38d GSEventRun + 115 
    17 UIKit        0x002cab58 UIApplicationMain + 1160 
    18 DataManager       0x00001c4c main + 102 
    19 DataManager       0x00001bdd start + 53 
) 
terminate called after throwing an instance of 'NSException' 
Program received signal: “SIGABRT”. 

Любые идеи?

+0

Измененное .h и .m для - (Недействительными) buttonTouched: (идентификатор) отправитель {} Теперь я получаю: wait_fences: не удалось получить ответ: 10004003 Программа принимаемый сигнал: "EXC_BAD_ACCESS". –

ответ

2

Поскольку вы включили двоеточие (:) в вашем аргументе селектора в addTarget, селектор Принимающий должен принимать параметр. Время выполнения не распознает селектор @selector(buttonTouched:), потому что не существует метода с этим именем, которое принимает параметр. Измените подпись метода, чтобы принять параметр типа id для решения этой проблемы.

+0

Изменено .h и .m to - (void) buttonTouched: (id) sender {} Теперь я получаю: wait_fences: не удалось получить ответ: 10004003 Запрограммированный сигнал: «EXC_BAD_ACCESS». Любые идеи? –