Я работаю над своим первым настоящим приложением для iPhone, простым приложением со списком дел, которое помогает мне упорядочить материал, за исключением того, что я получаю «нераспознанный селектор, отправленный на экземпляр 0x».
В частности:
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 имеет свой эталонный выход как IBOutlet в SwitchViewController.
Так вот .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];
}
}
Короче говоря, я полностью потерян, и это действительно расстраивает. У кого-нибудь есть совет, или вам нужен еще код?