2014-10-31 3 views
0

Итак, у меня есть эта пустота, где я инициализирую графический интерфейс и удаляю его, когда он нажимает на воспроизводимое изображение, которое я называю его [self GUI: 1]; и [self GUI: 0];UIImageView не удаляется из Superview в ObjectiveC

ГПИ приходит, но когда я пытаюсь скрыть это не работает, но это ввод в случае()

-(void)GUI:(int)action{ 
    // GUY LOADING 
    UIImageView *menu =[[UIImageView alloc] initWithFrame:CGRectMake(self.view.center.x-350/2,self.view.center.y-300/2,350,200)]; 
    UIImageView *menuplay =[[UIImageView alloc] initWithFrame:CGRectMake(self.view.center.x-270/2,self.view.center.y-50/2,133,50)]; 
    UIImageView *menuretry =[[UIImageView alloc] initWithFrame:CGRectMake(self.view.center.x+5,self.view.center.y-50/2,133,50)]; 
    menu.image=[UIImage imageNamed:@"menustart.png"]; 
    menuplay.image=[UIImage imageNamed:@"menuplay.png"]; 
    menuretry.image=[UIImage imageNamed:@"retrymenu.png"]; 
    if(action == 1){ 
     [self.view addSubview:menu]; 
     [self.view addSubview:menuplay]; 
     [self.view addSubview:menuretry]; 

    } 

    if(action == 0){ 
     [menu removeFromSuperview]; 
     [menuplay removeFromSuperview]; 
     [menuretry removeFromSuperview]; 

    } 
    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(StartGame:)]; 
    singleTap.numberOfTapsRequired = 1; 
    [menuplay setUserInteractionEnabled:YES]; 
    [menuplay addGestureRecognizer:singleTap]; 

} 

селектор StartGame только выполняет следующий код

[self GUI:0]; 

и viewDidLoad выполняет только следующий код:

[self GUI:1]; 
+0

Что такое пустота? Может быть лучше, если вы изучите правильные условия. И почему у вас есть комментарий, который говорит '// GUY LOADING'? Почему вы загружаете парня? – Popeye

ответ

3

Каждый раз, когда метод GUI: вызывается, нет, он не называется void, вы создаете новый экземпляр изображений. Также GUI не хорошее название для метода, лучше было бы что-то вроде: setMenuVisible:

Поскольку нет никакой ссылки на старый, предыдущий вид изображения они не могут удалить, Вы должны держать ссылку на вид изображения.

Так что в вашем заголовке сделать следующее:

@property (strong, nonatomic) UIImageView *menu; 
@property (strong, nonatomic) UIImageView *menuplay; 
@property (strong, nonatomic) UIImageView *menuretry; 

Тогда в вас GUI: Methode:

-(void)GUI:(int)action{ 
    // GUY LOADING 
    if (!self.menu) { 
     self.menu =[[UIImageView alloc] initWithFrame:CGRectMake(self.view.center.x-350/2,self.view.center.y-300/2,350,200)]; 
     menu.image=[UIImage imageNamed:@"menustart"]; 
    } 

    if (!self.menuplay) { 
     self.menuplay =[[UIImageView alloc] initWithFrame:CGRectMake(self.view.center.x-270/2,self.view.center.y-50/2,133,50)]; 
     menuplay.image=[UIImage imageNamed:@"menuplay"]; 

     UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(StartGame:)]; 
     singleTap.numberOfTapsRequired = 1; 
     [menuplay setUserInteractionEnabled:YES]; 
     [menuplay addGestureRecognizer:singleTap]; 
    } 
    if (!self.menuretry) { 
     self.menuretry =[[UIImageView alloc] initWithFrame:CGRectMake(self.view.center.x+5,self.view.center.y-50/2,133,50)]; 
     menuretry.image=[UIImage imageNamed:@"retrymenu"]; 
    } 


    if(action == 1){ 
     [self.view addSubview:self.menu]; 
     [self.view addSubview:self.menuplay]; 
     [self.view addSubview:self.menuretry]; 
    } 
    else if(action == 0){ 
     [self.menu removeFromSuperview]; 
     [self.menuplay removeFromSuperview]; 
     [self.menuretry removeFromSuperview]; 
    } 
} 
Смежные вопросы