У меня есть два файла с перьями, и из первого файла с перьями при нажатии кнопки Add на панели навигации я перешел на другую, и во втором представлении у меня снова есть панель навигации с кнопкой Save, которую я создал в событии viewDidLoad, как показано ниже :

btnAdd = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self.navigationItem action:@selector(saveRecord:)];
self.navigationItem.rightBarButtonItem = btnAdd;
self.navigationItem.title = @"Add Information";
[btnAdd release];

Также я создал метод saveRecord, как показано ниже

-(IBAction) saveRecord: (id)sender
{
     NSLog(@"Save Button Tapped");
}

Но после запуска программы появляется следующая ошибка: она не может найти метод saveRecord .. Даже этот метод также не вызывается с точками останова ..

< Сильный > ОШИБКА

2011-08-27 11:48:25.813 BarcodeDemo[1903:207] -[UINavigationItem saveRecord:]: unrecognized selector sent to instance 0x5558660
2011-08-27 11:48:25.817 BarcodeDemo[1903:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UINavigationItem saveRecord:]: unrecognized selector sent to instance 0x5558660'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x012f95a9 __exceptionPreprocess + 185
    1   libobjc.A.dylib                     0x0144d313 objc_exception_throw + 44
    2   CoreFoundation                      0x012fb0bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
    3   CoreFoundation                      0x0126a966 ___forwarding___ + 966
    4   CoreFoundation                      0x0126a522 _CF_forwarding_prep_0 + 50
    5   UIKit                               0x003744fd -[UIApplication sendAction:to:from:forEvent:] + 119
    6   UIKit                               0x00586cc3 -[UIBarButtonItem(UIInternal) _sendAction:withEvent:] + 156
    7   UIKit                               0x003744fd -[UIApplication sendAction:to:from:forEvent:] + 119
    8   UIKit                               0x00404799 -[UIControl sendAction:to:forEvent:] + 67
    9   UIKit                               0x00406c2b -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527

И еще стек идет ..........

Кто-нибудь может мне помочь ... что я забываю ????????

1
DShah 27 Авг 2011 в 10:25

3 ответа

Лучший ответ

target - это объект , в котором определено действие . Цель должна быть здесь self, а не self.navigationItem.

target:self
1
EmptyStack 27 Авг 2011 в 06:43

Не используйте target:self.navigationItem, иначе метод saveRecord: будет отправлен в UINavigationItem (что является ошибкой, которую вы получаете). Вы, наверное, просто хотите target:self.

2
jtbandes 27 Авг 2011 в 06:43

Попробуй это

UIBarButtonItem * btnAdd = [[UIBarButtonItem alloc] 
                                    initWithTitle:@"Add Information"  
                                    style:UIBarButtonItemStyleBordered
                                    target:self 
                                    action:@selector(saveRecord:)];
self.navigationItem.rightBarButtonItem = btnAdd;
[btnAdd release];
0
Emond Erno 27 Авг 2011 в 08:05