Reputation: 973
Every time I show some subView with this code, clearImage creates every time, and after 10 executions there are 10 images! How to delete this image after removeFromSuperview?
- (IBAction)nextTutorial:(id)sender {
UIImageView *clearImage = [[UIImageView alloc] initWithFrame:CGRectMake(270, 0, 50, 50)];
clearImage.image = [UIImage imageNamed:[settings objectAtIndex:7]];
UIImageView *helpImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)];
helpImage.image = [UIImage imageNamed:[settings objectAtIndex:8]];
UISlider *slider = [[UISlider alloc] initWithFrame:CGRectMake(60, 7, 200, 30)];
slider.value = 0.5;
if (hintnumber == 1) {
self.hintLabel.text = [settings objectAtIndex:1];
[self.view addSubview:slider];
hintnumber = 2;
} else if (hintnumber == 2) {
self.hintLabel.text = [settings objectAtIndex:2];
[self.view addSubview:clearImage];
hintnumber = 3;
} else if (hintnumber == 3) {
self.hintLabel.text = [settings objectAtIndex:3];
[self.view addSubview:helpImage];
[self.nextButton setTitle:[settings objectAtIndex:5] forState:UIControlStateNormal];
hintnumber = 4;
} else if (hintnumber == 4) {
hintnumber = 1;
[slider removeFromSuperview];
[clearImage removeFromSuperview];
[helpImage removeFromSuperview];
slider = nil;
clearImage = nil;
helpImage = nil;
[self.view removeFromSuperview];
}
Upvotes: 0
Views: 3785
Reputation: 25740
UPDATE based on new code:
If hintNumber is 4, you are creating an object, never adding it to a view, and then removing it from a view that it isn't in. You need to remove the object that was added previously from it's superview, and not the one that you just created using something like [[self.view viewWithTag:99] removeFromSuperview];
and set the tag number of clearView to 99 when you create it.
As an aside, you should only create the new objects when you need them.
Upvotes: 2
Reputation: 3484
Call [clearImage removeFromSuperview] before setting clearImage to nil. :)
Upvotes: 0