2012-04-19 4 views
0

У меня есть метод класса, где я хочу выполнить этот фрагмент кода ниже. проблема в том, что в методе класса вы не можете использовать что-то вроде self.view. поэтому я немного застрял здесь. Я нашел некоторые вещи об использовании [self class], но я действительно не понимаю, как использовать это в своей части кода.использовать самостоятельно в классе метод

for (UIView *view in [self.view subviews]) 
    { 
     if([view isKindOfClass:[Circle class]]) { 

      [UIView animateWithDuration:0.2 delay:0 options:UIViewAnimationCurveLinear animations:^{ 
       view.alpha = 0; 
       view.frame = CGRectMake(self.view.frame.size.width/2-35, self.view.frame.size.height/2-35, 70, 70); 
      } completion:nil]; 

      [view performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:0.4]; 
     } else { 
      // 
     } 
    } 

UPDATE с дополнительной информацией

У меня есть класс Circle. в этом классе у меня есть этот метод

- (IBAction)playerTap:(id)sender { 


    NSString *numberString; 
    numberString = [NSString stringWithFormat:@"%i",indexNumber+1]; 

    if (indexNumber < 14) 
    { 


    if ([label.text isEqualToString:numberString]) 
    { 
    [UIView animateWithDuration:0.1 animations:^{ 


     self.transform = CGAffineTransformMakeScale(1.2, 1.2); 

    } completion:^(BOOL finished) { 

     [UIView animateWithDuration:0.05 animations:^{ 
      self.transform = CGAffineTransformIdentity; 
      self.alpha = 0.2; 

     } completion:nil]; 

    }]; 

    ++indexNumber; 
    } 
    } else { 

     self.alpha = 0.2; 

     [NUMViewController gameHasEnded]; 

    } 

} 

когда indexNumber (статическая переменная) достигает определенного количества, я хочу метод в моем NUMViewController класса должны быть выполнены. И.Е. метод «gameHasEnded».

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

метод класса казался наиболее логичным для меня, потому что я не выполняю метод на объекте circle, но он затрагивает все объекты в моем другом классе.

ответ

3

Не имеет смысла иметь метод класса, который вызывает self.view. Класс не имеет view, и нет способа узнать, какой экземпляр вы имеете в виду. Почему вы делаете это в методе класса? Переместите его в экземпляр. Если у вас есть общий одноэлементный экземпляр, то методы класса могут ссылаться на него, но это, как правило, плохая идея, и его следует избегать, если это возможно (поскольку он связывает ваш класс с singleton).

+0

да я понимаю. Я добавил дополнительную информацию о своих намерениях. но я не уверен, как это сделать с помощью метода экземпляра. Я продолжаю получать нераспознанные ошибки выбора. –

+0

Вы должны переместить 'indexNumber' в класс модели (вероятно, одноэлементный объект), возможно, что-то вроде' Game'. Когда индекс достигает 0, 'Game' отправляет уведомление, например' GameEndedNotification'. Контроллер вида будет наблюдать это и избавиться от его взглядов. Ключевым моментом здесь является разделение классов Model, View и Controller. Но здесь нет причин для методов класса или статических переменных. –

+0

ОК спасибо. Я попробую. вся эта вещь MVC все еще несколько расплывчата, чтобы я мог правильно понять. –

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