IBAction 使 TabBarController 应用程序崩溃

Posted

技术标签:

【中文标题】IBAction 使 TabBarController 应用程序崩溃【英文标题】:IBAction crashes TabBarController App 【发布时间】:2010-08-20 02:10:21 【问题描述】:

我有一个基于窗口的 TabBarController 应用程序,我正在尝试从其中一个选项卡 (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

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

提前致谢!

【问题讨论】:

*** 中已经有很多答案***.com/questions/1529632/… 【参考方案1】:

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

【讨论】:

不,我没有。我早就想通了,但这就是问题所在。【参考方案2】:

我想你忘了把 openModalView 方法放在FirstViewController@interface 中。

@interface FirstViewController : UIViewController <ModalViewDelegate> 

- (IBAction) openModalView;
@end

【讨论】:

以上是关于IBAction 使 TabBarController 应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章

IBAction 使 TabBarController 应用程序崩溃

在 IBAction 中调用其他函数之前,如何使函数完成?

IOS:如何使从 nib 文件加载的子视图可以使用它的按钮(IBAction)

当我连接 IBOutlet 时,IBAction 停止工作

sendAsynchronousRequest 使 UI 冻结

使按钮 UIAlertView 执行 Segue