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 {
//
}
}
更新的詳細信息
我有一個Circle類。 在I類有這個方法
- (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.E. 「gameHasEnded」方法。
這將是一個方法與本文開頭的代碼。它會從視圖中移除所有其他的圓形實例。
類方法對我來說似乎是最合乎邏輯的,因爲我沒有在圓對象上執行該方法,但它會影響其他類中的所有對象。
是的,我明白。我已經添加了一些關於我的意圖的更多信息。但我不確定我應該如何使用實例方法來做到這一點。我不斷收到無法識別的選擇器錯誤。 – 2012-04-19 16:38:53
你應該將'indexNumber'移動到一個模型類(可能是一個單例對象),可能類似於'Game'。當索引達到0時,「遊戲」會發布像GameEndedNotification這樣的通知。視圖控制器會觀察並清除它的視圖。這裏的關鍵是分離模型,視圖和控制器類。但是這裏沒有理由使用類方法或靜態變量。 – 2012-04-19 19:45:42
好的謝謝。我會試試這個。這整個MVC的東西仍然有點模糊,我要正確把握。 – 2012-04-19 20:38:48