2012-09-26 38 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]; 
相關問題