Ich bin nicht ganz sicher von Ihrem Code, aber ich denke, dass Sie einen von zwei Fehlern begegnen. Entweder:
Sie haben nicht die Methoden erklärtswitchToNoGridView
oder goBack
in der Mainview Klassendeklaration. Für Xcode wissen, dass ein Objekt auf ein Verfahren reagiert, muss man seine Definition in der Klassenheaderdatei, wie folgt sind:
@interface MainView : ParentObject {
// instance variables
}
// properties
- (void)switchToNoGridView;
- (void)goBack;
@end
Dies setzt voraus, Sie tatsächlich sie als (void)
, natürlich erklären wollen - sie können haben Rückgabewerte, aber da Sie nichts mit dem Ergebnis des Aufrufs in Ihrem Code tun, gehe ich davon aus, dass sie ungültig sind. Oder:
Sie wollten MainView die Klasse, nicht mainView
das Objekt nennen. Da wir Ihre Property- oder Instanzvariablendefinitionen für GridView.h weder sehen noch die aktuellen Methodendeklarationen in MainView.h sehen können, ist es möglich, dass Sie eine statische Methode +(void)switchToNoGridView
und +(void)goBack
auf MainView deklariert haben, aber Sie sind Aufrufen einer Instanz mainView
von MainView. Zum Beispiel:
@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
Grundsätzlich ist es möglich, dass Sie verwirrt Klassenmethoden mit Objektmethoden haben. In beiden Fällen sollten Sie Ihre MainView-Headerdatei auf die entsprechenden Methodendefinitionen überprüfen.
das ist mein Mainview: // Mainview #import "MainView.h" #import "GridView.h" #import „NoGridView.h“ @implementation Mainview - (void) {awakeFromNib \t [self addSubview: gridview]; \t [self addSubview: Infoview]; } - (void) {switchToNoGridView \t [gridview removeFromSuperview] ; \t [self addSubview: nogridView]; } - (void) {goBack \t [nogridView removeFromSuperview]; \t [self addSubview: gridview]; } @end –