我有一个基于窗口的TABBARCONTROLLER应用程序,我正在尝试从其中一个Tabs(FirstViewController)介绍ModalView。该应用程序可以很好地构建,并且选项卡可以正常工作,但是单击“打开模态”按钮后,它会崩溃并给我:

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

我知道这是很多代码,但我想确保有人可以找到问题。

提前致谢!

有帮助吗?

解决方案

您在IB中的自定义视图控制器上是否设置了ModalViewController的类?那是我的问题。

其他提示

我想您忘了将OpenModalView方法放在 @interfaceFirstViewController.

@interface FirstViewController : UIViewController <ModalViewDelegate> {
}
- (IBAction) openModalView;
@end
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top