У меня есть два файла с перьями, и из первого файла с перьями при нажатии кнопки 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
И еще стек идет ..........
Кто-нибудь может мне помочь ... что я забываю ????????
3 ответа
target
- это объект , в котором определено действие . Цель должна быть здесь self
, а не self.navigationItem
.
target:self
Не используйте target:self.navigationItem
, иначе метод saveRecord:
будет отправлен в UINavigationItem (что является ошибкой, которую вы получаете). Вы, наверное, просто хотите target:self
.
Попробуй это
UIBarButtonItem * btnAdd = [[UIBarButtonItem alloc]
initWithTitle:@"Add Information"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(saveRecord:)];
self.navigationItem.rightBarButtonItem = btnAdd;
[btnAdd release];
Похожие вопросы
Новые вопросы
iphone
НЕ ИСПОЛЬЗУЙТЕ этот тег, если вы не обращаетесь конкретно к iPhone и / или iPod touch от Apple. Для вопросов, не зависящих от оборудования, используйте тег [ios]. Больше тегов, которые нужно рассмотреть, это [xcode] (но только если вопрос касается самой IDE), [swift], [target-c] или [cocoa-touch] (но не [cocoa]). Пожалуйста, воздержитесь от вопросов, касающихся iTunes App Store или iTunes Connect. Если вы используете C #, пометьте [mono].