Нераспознанный селектор отправлен на экземпляр
Кто-нибудь знает, почему я получаю эту ошибку?
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[CustomRaisedTabViewController cancel:]: unrecognized selector sent to instance 0x4d321e0'
Это код, где он терпит неудачу. Это по моему CustomTabViewController
, Ошибка происходит, когда я нажимаю кнопку "Отмена".
-(IBAction)showPostModalViewController {
PostActionModalViewController *addController = [[PostActionModalViewController alloc]
initWithNibName:@"PostActionModalView" bundle:nil];
// Configure the PostAddViewController. In this case, it reports any
// changes to a custom delegate object.
addController.delegate = self;
// Create the navigation controller and present it modally.
UINavigationController *navigationController = [[UINavigationController alloc]
initWithRootViewController:addController];
[self presentModalViewController:navigationController animated:YES];
UIBarButtonItem *cancelButton =
[[UIBarButtonItem alloc] initWithTitle: @"Cancel"
style: UIBarButtonItemStylePlain
target: self
action: @selector(cancel:)];
addController.navigationItem.rightBarButtonItem = cancelButton;
[cancelButton release];
//[self presentModalViewController:addController animated:true];
[navigationController release];
[addController release];
}
-(IBAction)cancel {
[self.parentViewController dismissModalViewControllerAnimated:YES];
}
3 ответа
Решение
Поскольку cancel:
метод не cancel
это то, что вы определили.
Измени свой cancel
действие, чтобы выглядеть так:
- (IBAction)cancel:(id)sender {
...
}
action: @selector(cancel:)
Для селектора действий, который принимает параметр! отмена: это означает, что будет принимать другой параметр.
измените свой метод на
-(IBAction)cancel:(id)sender{
// Do wat you want
}
or
-(IBAction)cancel:(UIButton *)btnSender{
/// Do what you want
}
Вы должны изменить подпись метода отмены в
-(IBAction)cancel:(id)sender
{
[self.parentViewController dismissModalViewControllerAnimated:YES];
}
когда вы добавили действие к вашему cancelButton (во время инициализации), вы указали селектор "cancel:", это означает, что он будет вызываться методом с одним параметром (кнопка отправителя)