IBAction аварийно завершает работу приложения TabBarController - PullRequest
0 голосов
/ 20 августа 2010

У меня есть оконное приложение TabBarController, и я пытаюсь представить ModalView на одной из вкладок (FirstViewController).Приложение прекрасно работает, вкладки работают, но после нажатия кнопки «Открыть модальное представление» происходит сбой, и я получаю:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIViewController openModalView]: unrecognized selector sent to instance 0x5d1e930'

ОБНОВЛЕНИЕ : я обнаружил, что проблемане с представлением модального представления, но сбой происходит с любыми вызовами IBAction.что может быть причиной этого?

FirstViewController.h:

#import <UIKit/UIKit.h>
#import "ModalViewController.h"

@interface FirstViewController : UIViewController <ModalViewDelegate> {}
@end

FirstViewController.m:

#import "FirstViewController.h"

@implementation FirstViewController
- (IBAction) openModalView {
    ModalViewController *modalView=[[ModalViewController alloc] init];
    modalView.modalDelegate=self;
    [self presentModalViewController:modalView animated:YES];
    [modalView release];
}

 #pragma mark -
 #pragma mark ModalViewDelegate

- (void) didHitCancel {
    [self dismissModalViewControllerAnimated:YES];
}

 #pragma mark - 

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}
- (void)viewDidUnload {
    [super viewDidUnload];
}
- (void)dealloc {
    [super dealloc];
}

@end

ModalViewController.h:

 #import <UIKit/UIKit.h>

@protocol ModalViewDelegate <NSObject>
- (void)didHitCancel;
@end

@interface ModalViewController : UIViewController {
    id modalDelegate;
}

@property (nonatomic, assign) id<ModalViewDelegate> modalDelegate;

- (IBAction) cancel;

@end

ModalViewController.m:

 #import "ModalViewController.h"

@implementation ModalViewController

@synthesize modalDelegate;

- (IBAction) cancel {
    [self.modalDelegate didHitCancel];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
 }
 - (void)viewDidUnload {
    [super viewDidUnload];
}
- (void)dealloc {
    [super dealloc];
}

@end

Я знаю, что это много кода, но я хотел убедиться, что кто-то может найти проблему.

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 03 февраля 2011

У вас есть класс на вашем пользовательском контроллере представления в IB, установленном в ModalViewController? Это была моя проблема.

0 голосов
/ 20 августа 2010

Я думаю, вы забыли поместить метод openModalView в @interface из FirstViewController.

@interface FirstViewController : UIViewController <ModalViewDelegate> {
}
- (IBAction) openModalView;
@end
...