2012-04-19 12 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クラスのメソッドを実行することにしたい一定量に達したとき。 I. "gameHasEnded"メソッド。

このコードは、この記事の冒頭にあるコードを使用する方法になります。他のすべてのサークルインスタンスがビューから削除されます。

私はサークルオブジェクトでメソッドを実行していないので、クラスメソッドは私にとって最も論理的だと思われましたが、それは他のクラスのすべてのオブジェクトに影響します。

答えて

3

self.viewを呼び出すクラスメソッドを持つことは意味がありません。クラスにはviewがなく、どのインスタンスが意味するのかわかりません。なぜクラスメソッドでこれをやっているのですか?それをインスタンスに移動します。共有シングルトンインスタンスを持っている場合は、クラスメソッドがそれを参照することができますが、これは一般的には悪い考えであり、可能であれば避けるべきです(クラスをシングルトンに結びつけるため)。

+0

はいわかりました。私は私の意図についていくつかの情報を追加しました。しかし私はインスタンスメソッドでそれをどうすべきか分かりません。私は認識できないセレクターエラーを続けています。 –

+0

'indexNumber'をモデルクラス(おそらくシングルトンオブジェクト)に移動する必要があります。恐らく' Game'のようなものです。インデックスが0になると、 'Game'は' GameEndedNotification'のような通知を送ります。ビューコントローラはそれを観察し、そのビューを取り除く。ここで重要なのは、Model、View、およびControllerクラスを分離することです。しかし、クラスメソッドや静的変数には理由がありません。 –

+0

よろしくお願いいたします。私はこれを試してみましょう。このMVCの全体的なことは、私が適切に把握するにはやや曖昧です。 –

関連する問題