아래 코드를 수행하려는 클래스 메서드가 있습니다. 문제는 클래스 메소드에서 self.view와 같은 것을 사용할 수 없다는 것입니다. 그래서 나는 여기에 조금 붙어있다. [자습서] 사용에 대한 몇 가지 정보를 찾았지만 코드 조각에서이를 사용하는 방법을 실제로 이해하지 못합니다. 더 많은 정보클래스 메서드에서 자체 사용
와
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 클래스가 있습니다. 그 클래스의 는 내가 indexNumber (정적 변수)을 수행 할 내 NUMViewController 클래스의 방법을 원하는 일정 금액에 도달 한이 방법
- (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];
}
}
에게 있습니다. I.E. "gameHasEnded"메소드.
이 게시물의 시작 부분에 코드가있는 메소드가됩니다. 보기에서 다른 모든 원 인스턴스를 제거합니다.
클래스 메서드는 원 객체에서 메서드를 수행하지 않기 때문에 가장 논리적 인 것처럼 보였지만 다른 클래스의 모든 객체에 영향을줍니다.
네, 이해합니다. 내 의도에 대한 정보를 더 추가했습니다. 하지만 인스턴스 메서드로 어떻게해야하는지 잘 모르겠습니다. 알 수없는 선택기 오류가 계속 발생합니다. –
'indexNumber'를 아마도 게임과 같은 모델 클래스 (아마도 싱글 톤 객체)로 옮겨야합니다. 인덱스가 0이되면 'Game'은'GameEndedNotification'과 같은 알림을 게시합니다. 뷰 컨트롤러는이를 관찰하고 뷰를 제거합니다. 여기서 핵심은 Model, View 및 Controller 클래스를 분리하는 것입니다. 그러나 클래스 메소드 나 정적 변수에는 여기에 이유가 없습니다. –
감사합니다. 나는 이것을 시도 할 것이다. 이 전체 MVC 일은 나에게 제대로 이해하기에는 아직 다소 모호합니다. –