2014-10-23 2 views
0

У меня проблемы с действием кнопки ... Я не понимаю, почему что-то не работает, и хотел спросить вас, можете ли вы помочь мне понять ошибку.Удалить UiView removeFromSuperview с действием кнопки

В моем представленииКонтроллер У меня есть кнопка в выбранном режиме, добавляет UIView внутри другого UIView, но когда кнопка была введена, не была выбрана, чтобы исключить ранее введенный вид, он остается там, ничего не делая ... Я попытался таким образом, но я не понимаю, где я неправильно

- (IBAction)shareActive:(id)sender { 
     UIView *checkActive = [[UIView alloc]init]; 
     checkActive.frame =CGRectMake(2, 2, 11, 11); 
     checkActive.layer.masksToBounds = YES; 
     checkActive.layer.cornerRadius = 5.5f; 
     checkActive.backgroundColor = [UIColor greenColor]; 


     if (!self.condividiButton.selected) { 

       self.condividiButton.selected = YES; 
      [self.checkCondividi addSubview:checkActive]; 

       NSLog(@"attivo"); 

     }else { 
      self.condividiButton.selected = NO; 
        [checkActive removeFromSuperview]; 

      NSLog(@"disattivo"); 


     } 
    } 
+0

, когда вы вызывали этот метод, вы всегда создавали _new local instance_ 'UIView' как' checkActive'. очевидно, что этот экземпляр совершенно другой, который вы добавили в свой супервизор во время предыдущего сеанса, поэтому, когда вы хотите удалить, вы работаете с _new instance_, который никогда не был добавлен в какой-либо супервизор, и он не будет вызывают какой-либо эффект. – holex

+0

На самом деле ... Я нашел ошибку ... Я создал свойство в файле заголовка и запустил представление в viewDidLoad, затем в методе кнопки в представлении я указал добавление и удаление из представления, и теперь все это работает .. большое спасибо за помощь ... :) – kAiN

ответ

1

здесь один из многих возможных решений.

Я уверен, что другие предоставят вам различные идеи о том, как можно решить эту проблему.

- (IBAction)buttonShareTouchedUpInside:(UIButton *)sender { 
    if (!self.condividiButton.selected) { 
     UIView *checkActive = [[UIView alloc]init]; 
     checkActive.tag = 121212; 
     checkActive.frame =CGRectMake(2, 2, 11, 11); 
     checkActive.layer.masksToBounds = YES; 
     checkActive.layer.cornerRadius = 5.5f; 
     checkActive.backgroundColor = [UIColor greenColor]; 

     self.condividiButton.selected = YES; 
     [self.checkCondividi addSubview:checkActive]; 
    } else { 
     self.condividiButton.selected = NO; 
     [self.checkCondividi.subviews enumerateObjectsUsingBlock:^(UIView * obj, NSUInteger idx, BOOL *stop) { 
      if (obj.tag == 121212) { 
       [obj removeFromSuperview]; 
      } 
     }]; 
    } 
} 

Примечание: исходная задача может быть решена с помощью многих других и, вероятно, более элегантным образом, но я не о тех, по поводу здесь.

Смежные вопросы