2012-04-06 99 views
0

我想通过单击按钮来检查子视图的图像是否隐藏。日志确实显示,但我无法以某种方式获得图像的隐藏状态。IBAction子检查是否隐藏图像

这里怎么回事?希望你能帮助我!

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)而不是检查您在viewDidLoad:上创建的实际UIImageView对象。你想要的实际是持有对subslide1的引用,并检查它。

Ps。由于按钮调用检查方法实际上是对你subslide1的子视图,你可以得到这样的引用:

SubSlide1Hoofdstuk3 *switchactie = [sender superView]; 

编辑:你的实际代码的一个例子:

在.h文件中

@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

感谢:

@property(nonatomic, strong) SubSlide1Hoofdstuk3 *subslide1; 
在.m文件

你的快速回复,我无法得到这个工作。我尝试了发件人超级查看,但它仍然没有重新设置图像:/ maby im做了一个错误的参考,我仍然在尝试。 – Joey 2012-04-06 10:50:32

+0

“SubSlide1Hoofdstuk3”的基类是什么?如果它不是一个UIView子类,那么我想你可以尝试在你的.h文件中设置一个属性,如:@property(nonatomic,strong)SubSlide1Hoofdstuk3 * subslide1',综合它并引用它:'self.subslide1' 。我希望这会对你有用。 – Alladinian 2012-04-06 10:55:06

+0

再次感谢我在SubSlideHoofdstuk3.h中的属性,如下所示:'@property(nonatomic,strong)SubSlide1Hoofdstuk3 * subslidereference;'然后在.m文件中进行合成。然后尝试在RootSlide.m内调用它:'UIImageView * zwart = subslidereference.imageZwart;'但是这给了我一个错误。 self.subslidereference也不起作用。 – Joey 2012-04-06 11:24:36