Reputation: 177
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
CGRect viewRect = CGRectMake(250, 100, 30, 30);
as = [[UIImageView alloc] initWithFrame:viewRect];
as.backgroundColor=[UIColor clearColor];
UIImage *img = [UIImage imageWithContentsOfFile: [[NSBundle mainBundle] pathForResource:@"check" ofType:@"png"]];
[as setImage:img];
[self.view addSubview:as];
BOOL test= [[NSUserDefaults standardUserDefaults] boolForKey:@"switch"];
NSLog(@"%@", (test ? @"YES" : @"NO"));
if(test == YES)
{
as.hidden=NO;
}
else
{
as.hidden=YES;
}
}
The test
results YES
but the imageView
doesn't listen the command .hidden
or update every time when the viewDidAppear
.If it is not when I restart the app and it disappear after I turn it to yes I show perfectly but after than I never goes always there I can't make it hidden.
any idea why it is not reacting?
Upvotes: 6
Views: 22359
Reputation: 595
The problem is you create new UIImageView
every time when your view appears. You have to create UIImageView
as once:
- (void)loadView {
[super loadView];
CGRect viewRect = CGRectMake(250, 100, 30, 30);
as = [[UIImageView alloc] initWithFrame:viewRect];
as.backgroundColor = [UIColor clearColor];
UIImage *img = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"check" ofType:@"png"]];
as.image = img;
[self.view addSubview:as];
[as release];
}
and then show/hide it in -viewDidAppear
method:
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
BOOL test = [[NSUserDefaults standardUserDefaults] boolForKey:@"switch"];
NSLog(@"%@", (test ? @"YES" : @"NO"));
if(test == YES) {
as.hidden = NO;
}
else {
as.hidden = YES;
}
}
Upvotes: 11