завершение работы приложения из-за необработанного исключения при использовании: (id) отправителя на IBAction - PullRequest
0 голосов
/ 12 марта 2011

У меня есть приложение, использующее модальное представление с несколькими кнопками. Когда я нажимаю кнопку, я вызываю следующую функцию:

-(IBAction)iconWasSelected:(id) sender
{
    NSLog(@"icon button was pressed");
    [self dismissModalViewControllerAnimated:YES];
}

Если я удалю: (id) отправителя; это работает просто отлично, но я пытаюсь получить объект, который вызывает функцию.

Это ошибка его "рвоты":

2011-03-11 22:59:55.793 app[14107:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[IconPickerViewController iconWasSelected]: unrecognized selector sent to instance 0x800bbf0'
*** Call stack at first throw:
(
        0   CoreFoundation                      0x01629be9 __exceptionPreprocess + 185
        1   libobjc.A.dylib                     0x0177e5c2 objc_exception_throw + 47
        2   CoreFoundation                      0x0162b6fb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
        3   CoreFoundation                      0x0159b366 ___forwarding___ + 966
        4   CoreFoundation                      0x0159af22 _CF_forwarding_prep_0 + 50
        5   UIKit                               0x0053da6e -[UIApplication sendAction:to:from:forEvent:] + 119
        6   UIKit                               0x005cc1b5 -[UIControl sendAction:to:forEvent:] + 67
        7   UIKit                               0x005ce647 -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527
        8   UIKit                               0x005cd1f4 -[UIControl touchesEnded:withEvent:] + 458
        9   UIKit                               0x005620d1 -[UIWindow _sendTouchesForEvent:] + 567
        10  UIKit                               0x0054337a -[UIApplication sendEvent:] + 447
        11  UIKit                               0x00548732 _UIApplicationHandleEvent + 7576
        12  GraphicsServices                    0x01ce4a36 PurpleEventCallback + 1550
        13  CoreFoundation                      0x0160b064 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
        14  CoreFoundation                      0x0156b6f7 __CFRunLoopDoSource1 + 215
        15  CoreFoundation                      0x01568983 __CFRunLoopRun + 979
        16  CoreFoundation                      0x01568240 CFRunLoopRunSpecific + 208
        17  CoreFoundation                      0x01568161 CFRunLoopRunInMode + 97
        18  GraphicsServices                    0x01ce3268 GSEventRunModal + 217
        19  GraphicsServices                    0x01ce332d GSEventRun + 115
        20  UIKit                               0x0054c42e UIApplicationMain + 1160
        21  naggy                               0x00002298 main + 102
        22  naggy                               0x00002229 start + 53
)
terminate called after throwing an instance of 'NSException'

Есть какие-нибудь подсказки? !! Помощь и спасибо !!

1 Ответ

1 голос
/ 12 марта 2011

Если вы вызываете метод программно, убедитесь, что вы правильно установили действие. Например, это будет работать, когда присутствует (id)sender:

UIBarButtonItem *newButton = [[UIBarButtonItem alloc] initWithTitle:@"CLICK ME" 
                                                              style:UIBarButtonItemStyleBordered 
                                                             target:self 
                                                             action:@selector(iconWasSelected:)];

, и это будет работать, когда (id)sender отсутствует:

UIBarButtonItem *newButton = [[UIBarButtonItem alloc] initWithTitle:@"CLICK ME" 
                                                              style:UIBarButtonItemStyleBordered 
                                                             target:self 
                                                             action:@selector(iconWasSelected)];

Обратите внимание, что единственная разница в коде - это двоеточие!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...