UINavigationItem - нераспознанный селектор - PullRequest
0 голосов
/ 27 августа 2011

У меня есть два файла пера и из первого файла пера, когда я нажимаю кнопку 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. Даже этот метод также не вызывается с точками останова.

ERROR

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

и продолжается еще один стек ..........

Может ли кто-нибудь помочь мне ... что я забыл ????????

Ответы [ 3 ]

2 голосов
/ 27 августа 2011

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

1 голос
/ 27 августа 2011

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

target:self
0 голосов
/ 27 августа 2011

попробуйте

UIBarButtonItem * btnAdd = [[UIBarButtonItem alloc] 
                                    initWithTitle:@"Add Information"  
                                    style:UIBarButtonItemStyleBordered
                                    target:self 
                                    action:@selector(saveRecord:)];
self.navigationItem.rightBarButtonItem = btnAdd;
[btnAdd release];
...