I'm not quite sure from your code, but I think you're encountering one of two errors. Either:
You haven't declared the methods switchToNoGridView
or goBack
in the MainView class declaration. For Xcode to know that an object responds to a method, you have to include its definition in the class header file, like this:
@interface MainView : ParentObject {
// instance variables
}
// properties
- (void)switchToNoGridView;
- (void)goBack;
@end
This assumes you actually want to declare them as (void)
, of course - they can have return values, but since you don't do anything with the result of the call in your code, I'm assuming they're void. Or:
You meant to call MainView the class, not mainView
the object. Since we can't see your property or instance variable definitions for GridView.h, nor can we see the current method declarations in MainView.h, it's possible that you have a static method +(void)switchToNoGridView
and +(void)goBack
declared on MainView, but you're calling it on an instance mainView
of MainView. For example:
@interface AClass : NSObject { }
+ (void)doSomething;
@end
@implementation AClass
+ (void)doSomething {
NSLog(@"Doing something");
}
@end
#import "AClass.h"
@interface AnotherClass : NSObject {
AClass *aClass;
}
@property(nonatomic,retain) AClass *aClass;
- (void)doSomethingElse;
@end
@implementation AnotherClass
- (void)doSomethingElse {
[aClass doSomething]; // This will break at runtime
[AClass doSomething]; // but this won't
}
@end
Basically, it's possible you've confused class methods with object methods. Either way, you should check your MainView header file for the appropriate method definitions.