我正在處理我的第一個真正的iPhone應用程序,一個簡單的待辦事項列表應用程序來幫助我組織東西,除了我得到一個「無法識別的選擇器發送到實例0x「。iPhone:IBAction導致「無法識別的選擇器發送到實例」錯誤
具體做法是:
2010-02-20 14:30:09.200 ToDoApp[88562:20b] *** -[NSCFDictionary switchViews:]: unrecognized selector sent to instance 0x3d22de0
2010-02-20 14:30:09.201 ToDoApp[88562:20b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFDictionary switchViews:]: unrecognized selector sent to instance 0x3d22de0'
我環顧四周,並想通了,它可能是在IB的連接問題,但我是新來的這整個事情連接(男人,我希望他們支持的Java或Python),所以這是它的佈局。我有3個類,一個SwitchViewController,一個MainScreenViewController和一個ToDoListViewController。當我點擊MainScreenViewController上的一個按鈕時,我觸發了引發這個問題的「switchViews」函數。他們建立的方式是,按鈕(一個UIBarButtonItem)具有「sentAction」去switchViews。這個ViewButton在SwitchViewController中有其作爲IBOutlet的參考插座。
因此,這裏的.H爲SVC:
#import <UIKit/UIKit.h>
@class MainScreenViewController;
@class ToDoListViewController;
@class EditViewController;
#define kMinimumGestureLength 25
#define kMaximumVariance 5
@interface SwitchViewController : UIViewController {
MainScreenViewController *mainScreenViewController;
ToDoListViewController *toDoListViewController;
EditViewController *editViewController;
IBOutlet UIBarButtonItem *viewButton;
CGPoint gestureStartPoint;
}
@property (retain, nonatomic) MainScreenViewController *mainScreenViewController;
@property (retain, nonatomic) ToDoListViewController *toDoListViewController;
@property (retain, nonatomic) EditViewController *editViewController;
@property (retain, nonatomic) IBOutlet UIBarButtonItem *viewButton;
@property CGPoint gestureStartPoint;
-(IBAction)switchViews:(id)sender;
而對於switchViews功能:
-(IBAction) switchViews:(id)sender
{
NSLog(@"Switching views");
if(self.toDoListViewController.view.superview == nil){
if(self.toDoListViewController ==nil){
ToDoListViewController *toDoVC = [[ToDoListViewController alloc] initWithNibName:@"ToDoListView" bundle:nil];
self.toDoListViewController = toDoVC;
//[toDoVC release];
}
[mainScreenViewController.view removeFromSuperview];
[self.view insertSubview:toDoListViewController.view atIndex:0];
}
else{
if(self.mainScreenViewController == nil){
MainScreenViewController *mainController = [[MainScreenViewController alloc] initWithNibName:@"MainScreenView" bundle:nil];
self.mainScreenViewController = mainController;
//[mainController release];
}
[toDoListViewController.view removeFromSuperview];
[self.view insertSubview:mainScreenViewController.view atIndex:0];
}
}
因此,在短期,我完全失去了,這真是令人沮喪。任何人有任何建議,或需要更多的代碼?
具有完全相同的問題,在我通過FirstResponder路由後修復(但仍不知道爲什麼會起作用) – jbnunn 2010-02-27 16:32:12