「インスタンス0xに送信された認識されないセレクター」を取得していることを除いて、物事を整理するのに役立つ単純なTo Doリストアプリケーションである、最初の実際のiPhoneアプリに取り組んでいます。
具体的には:
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をサポートしていればよかったのに)、それがどのようにレイアウトされているかを次に示します. SwitchViewController、MainScreenViewController、ToDoListViewController の 3 つのクラスがあります。MainScreenViewController のボタンを押すと、この問題を引き起こしている "switchViews" 関数がトリガーされます。私が設定した方法は、ボタン(UIBarButtonItem)に「sentAction」がswitchViewsに移動することです。この ViewButton には、SwitchViewController の IBOutlet として参照アウトレットがあります。
SVC の .h は次のとおりです。
#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];
}
}
要するに、私は完全に道に迷っており、これは本当にイライラしています。誰にもアドバイスがありますか、それ以上のコードが必要ですか?