- (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?
Nik 'Narmo' Dyonin
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;
}
}
来源:https://stackoverflow.com/questions/7189082/how-to-hide-show-the-uiimageview