2012-04-06 1 views
0

Я пытаюсь проверить, скрыто ли изображение подвью или нет, нажав кнопку. Журнал показывает, но я не могу получить скрытый статус изображения.IBAction to subview, чтобы проверить, не скрыто ли изображение.

Что-то не так? Надеюсь, ты поможешь мне!

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]; 

IBAction проверить изображение в подвид скрыт:

-(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... :("); 
    } 
} 

ответ

2

Проблема здесь состоит в том, что внутри вашего метода -(IBAction)switchImageZwart:(id)sender вы создаете новый экземпляр SubSlide1Hoofdstuk3 и проверки его свойства (UIImageViews) вместо проверки фактических объектов UIImageView, которые вы создали на viewDidLoad:. Фактически вы хотите сохранить ссылку на subslide1 и проверить это вместо этого.

Ps. Так как кнопка вызова метода проверки фактически подвид вашего subslide1, вы можете получить ссылку, как:

SubSlide1Hoofdstuk3 *switchactie = [sender superView]; 

EDIT: Пример от фактического кода:

в вашем файле .h:

@property(nonatomic, strong) SubSlide1Hoofdstuk3 *subslide1; 

в файле .m:

@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

Спасибо за ваш быстрый ответ, я не могу заставить это работать. Я попробовал супервизор отправителя, но он по-прежнему не регенерирует изображения:/maby im делает что-то неправильно с созданием ссылки, я все еще пытаюсь. – Joey

+0

Каков базовый класс вашего 'SubSlide1Hoofdstuk3'? Если это не подкласс UIView, то я думаю, вы могли бы попробовать установить свойство в вашем .h-файле, например: '@property (неатомный, сильный) SubSlide1Hoofdstuk3 * subslide1', синтезировать его и ссылаться на него как:' self.subslide1' , Надеюсь, что это сработает для вас. – Alladinian

+0

Еще раз спасибо, я попробовал свойство в SubSlideHoofdstuk3.h так: '@property (неатомный, сильный) SubSlide1Hoofdstuk3 * subslidereference;' И затем синтезируйте его в файле .m. Затем попробуйте вызвать его внутри RootSlide.m следующим образом: 'UIImageView * zwart = subslidereference.imageZwart;' Но это дает мне ошибку. self.subslidereference тоже не работает. – Joey