2011-08-25 102 views
6
- (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; 
     } 
} 

test结果YESimageView不听指挥.hidden或更新每次当viewDidAppear。如果它不是,当我重新启动应用程序,它消失,我把它变成是我展现完美,但经过后比我永远不会总是在那里我不能让它隐藏。 任何想法,为什么它没有反应?如何隐藏/显示UIimageview?

回答

11

问题是您每次出现视图时都会创建新的UIImageView。你必须创建UIImageView因为一旦:

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

,然后显示/隐藏它 - viewDidAppear方法:

- (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; 
    } 
}