2012-04-06 7 views
0

Ich versuche zu überprüfen, ob ein Bild einer Unteransicht verborgen ist oder nicht, indem ich auf eine Schaltfläche klicke. Das Protokoll wird angezeigt, aber ich kann den versteckten Status des Bildes irgendwie nicht bekommen.IBAction zur Unteransicht, um zu überprüfen, ob das Bild ausgeblendet ist

Was läuft hier falsch? Hoffe du kannst mir helfen!

viewDidLoad:

SubSlide1Hoofdstuk3 *subslide1 = [[SubSlide1Hoofdstuk3 alloc] init]; 
CGRect frame = self.view.frame; 
frame.origin.x = 0; 
frame.origin.y = 0; 
subslide1.view.frame = frame; 

// This works finaly 
UIImageView *zwart = subslide1.imageZwart; 
[zwart setImage:[UIImage imageNamed:@"imageblack.jpg"]]; 
[subslide1.b1 addTarget:self action:@selector(switchImageZwart:) forControlEvents:UIControlEventTouchUpInside]; 

[_scrollView addSubview:subslide1.view]; 

Die IBAction das Bild in subview überprüfen versteckt:

-(IBAction)switchImageZwart:(id)sender 
{ 
    SubSlide1Hoofdstuk3 *switchactie = [[SubSlide1Hoofdstuk3 alloc] init]; 
    UIImageView *wit = switchactie.imageWit; 
    UIImageView *zwart = switchactie.imageZwart; 

    if(zwart.hidden == YES) { 
     NSLog(@"Image black is hidden!"); 
    } else if(wit.hidden == YES) { 
     NSLog(@"Image white is hidden!"); 
    } else { 
     NSLog(@"Can't say... :("); 
    } 
} 

Antwort

2

Das Problem hierbei ist, dass Sie in Ihrem -(IBAction)switchImageZwart:(id)sender Methode eine neue Instanz von SubSlide1Hoofdstuk3 erstellen und die Überprüfung ihrer Eigenschaften (UIImageViews) statt die tatsächlichen UIImageView-Objekte zu überprüfen, die Sie unter viewDidLoad: erstellt haben. Was Sie eigentlich wollen, ist eine Referenz auf subslide1 zu halten und das stattdessen zu überprüfen.

Ps. Da die Taste, um das Prüfungsverfahren Aufruf tatsächlich ein Subview Ihrer subslide1 ist, könnten Sie eine Referenz wie erhalten:

SubSlide1Hoofdstuk3 *switchactie = [sender superView]; 

EDIT: Ein Beispiel auf dem eigentlichen Code:

in Ihrer .h-Datei:

@property(nonatomic, strong) SubSlide1Hoofdstuk3 *subslide1; 

in .m-Datei:

@synthesize subslide1; 

- (void)viewDidLoad 
{ 
    //... 
    self.subslide1 = [[SubSlide1Hoofdstuk3 alloc] init]; 
    CGRect frame = self.view.frame; 
    frame.origin.x = 0; 
    frame.origin.y = 0; 
    self.subslide1.view.frame = frame; 

    // This works finaly 
    UIImageView *zwart = self.subslide1.imageZwart; 
    [zwart setImage:[UIImage imageNamed:@"imageblack.jpg"]]; 
    [self.subslide1.b1 addTarget:self action:@selector(switchImageZwart:) forControlEvents:UIControlEventTouchUpInside]; 

    [_scrollView addSubview:self.subslide1.view]; 

} 


-(IBAction)switchImageZwart:(id)sender 
{ 
    SubSlide1Hoofdstuk3 *switchactie = self.subslide1; 
    UIImageView *wit = switchactie.imageWit; 
    UIImageView *zwart = switchactie.imageZwart; 

    if(zwart.hidden == YES) { 
     NSLog(@"Image black is hidden!"); 
    } else if(wit.hidden == YES) { 
     NSLog(@"Image white is hidden!"); 
    } else { 
     NSLog(@"Can't say... :("); 
    } 
} 
+0

Vielen Dank für Ihre schnelle Antwort, ich kann das nicht zur Arbeit bringen. Ich habe versucht, den Absender superView, aber es immer noch nicht die Bilder wieder:/maby ich etwas falsch machen mit der Verweisung, ich versuche immer noch. – Joey

+0

Was ist die Basisklasse Ihres 'SubSlide1Hoofdstuk3'? Wenn es keine UIView-Unterklasse ist, dann könnten Sie versuchen, eine Eigenschaft in Ihrer .h-Datei zu setzen: '@property (nonatomic, strong) SubSlide1Hoofdstuk3 * subslide1', synthetisieren Sie es und verweisen Sie darauf wie folgt:' selfslide1' . Ich hoffe, dass dies für Sie funktioniert. – Alladinian

+0

Danke nochmal, ich habe versucht die Eigenschaft in der SubSlideHoofdstuk3.h wie folgt: '@property (nichtatomare, starke) SubSlide1Hoofdstuk3 * subslidereference;' Und dann synthetisieren es in der .m-Datei. Versuchen Sie dann, es in der RootSlide.m wie folgt aufzurufen: 'UIImageView * zwart = subslidereference.imageZwart;' Aber das gibt mir einen Fehler. self_slidereference funktioniert auch nicht. – Joey