2016-03-31 2 views
0

Ich habe BaseClass, die UIViewController-Klasse und untergeordnete Ansicht Klassen ist. In BaseClass habe ich die BOOL-Variable isRegistrationScreenVisible, um die Menüschaltfläche ein- oder auszublenden. Wenn ich vom Login zum Registrierungsbildschirm gehe, möchte ich isRegistrationScreenVisible = YES setzen; aber es wird nicht eingestellt. Hier meine Klassen:Setzen Sie BOOL-Variable von Kind-Klasse zu Eltern in Objective C

BaseView.h

@interface BaseView : UIViewController 
    @property(assign, nonatomic) BOOL isRegistrationScreenVisible; 
@end 

ChildView.h

#import "BaseView.h" 
    @interface LoginViewController : BaseView 
@end 

ChildView.m

- (IBAction)showRegistration:(id)sender { 
    [super isRegistrationScreenVisible:YES]; 
    NSLog([super isRegistrationScreenVisible][email protected]"SET REG SCREEN":@"WE ARE NO"); 
} 

Shows in Protokollen, die Variablen auf YES gesetzt ist, aber wenn Es ist eine weitere Variable zu wechseln, ist NO

+0

Ist das reale Code? Sie definieren 'BaseViewController', erben aber von' BaseView' ... und wer kennt die Dateinamen. –

+0

wollte es für Fragen einfach machen. Bearbeitete die Frage. Danke für das Zeigen. –

+0

Nach den Änderungen versuchen Sie '[super setIsRegistrationScreenVisible: YES];'. –

Antwort

0

In BaseViewController, müssen Sie die Eigenschaft mit dem gleichen Namen erklären, wie Sie verwenden, darauf zuzugreifen:

@interface BaseViewController : UIViewController 
    @property(assign, nonatomic) BOOL isRegistrationScreenVisible; 
@end 
+0

hat die Frage bearbeitet. Es ist meine Schuld während der Vorbereitungsfrage für Stackoverflow. Im eigentlichen Code habe ich dieselben Namen. –

0

Da die Unterklasse die Eigenschaft erbt Sie verwenden können:

self.isRegistrationScreenVisible = YES; 
Verwandte Themen