2012-09-26 43 views
0

该应用程序与NSInvalidArgumentException结束时,我用这个代码,我不知道为什么:“NSInvalidArgumentException”的/“ - [AppDelegate中fieldChanged:]:无法识别的选择发送到实例

在我FieldViewController.m我:

-(IBAction)fieldEntered:(NSString*)sender { 
[self.temp resignFirstResponder]; 
NSString *setFieldEntered; 
setFieldEntered = temp.text; 
fieldTemp = setFieldEntered; 
[(EditViewController *)[[UIApplication sharedApplication] delegate] fieldChanged:(id)sender]; 

[self dismissModalViewControllerAnimated:YES]; 
} 

终止于[(EditViewController *)[[UIApplication sharedApplication] delegate] fieldChanged:(id)sender];行。

在我的EditViewController.h中我有 - (void)fieldChanged:(id)sender;并在我的EditViewController.m文件中有:

-(void)fieldChanged:(id)sender { 
    [fieldArray insertObject:[FieldViewController fieldEntered] atIndex:[fieldArray count]+1]; 
} 

请帮我指出这一点。谢谢。

回答

1

从错误中可以看出,UIApplication的委托被设置为一个名为AppDelegate的类的实例,而您将其视为另一个名为EditViewController的类。

+0

是的。我将如何将其更改为EditViewController? –

+0

@ToddPleeter:无论您将AppDelegate设置为委托,您都可以使用EditViewController。但是,这看起来像一个奇怪的设计,有一个视图控制器作为应用程序的代表。你确定这就是你想要的吗? – Chuck

+0

感谢您的帮助查克。我想要的是让用户将某些内容放入EditViewController上构建的数组中。我认为一个代表应该为我做这件事。我能做的是在正常参数范围内? –

0

这没有意义。可能你忘了参考控制器。应该是这样的:

[[[UIApplication sharedApplication] delegate].editViewController fieldChanged:sender]; 
相关问题