2013-02-05 3 views
1

구문이 잘못되었다고 생각합니다. 그러나 블록을 처음 사용하기 때문에 이것을 파악할 수 없습니다.블록이 메서드에서 호출되지 않음

-(void)animateViewConstraintChange: (void(^)(void))completionHandler; 

이 방법은 다음과 같습니다 :이 사용자 정의 방법이

-(void)animateViewConstraintChange:(void(^)(void))completionHandler 
{ 
    [[self view]setNeedsUpdateConstraints]; 
    [UIView animateWithDuration:0.6 
       animations:^{ 
       [[self view]layoutIfNeeded]; 
       } completion:^(BOOL finished){ 
        completionHandler; 
       }]; 

} 

그것은 컴파일 및 실행, 그러나 나는이 방법 completionHandler에 실제로 넣어 뭔가를 호출 할 때, 즉 코드는하지 않습니다 이제까지 불렀다.

[self animateViewConstraintChange:^{ 
    [orderedViewControllers removeObject:[self middleViewController]]; 
    [[[self middleViewController] view] removeFromSuperview]; 

    [[self middleViewController] removeFromParentViewController]; 

    _middleViewController = nil; 

    [[self view]setNeedsUpdateConstraints]; 
}];  

따라서 위 코드의 경우 animateViewConstraintChange가 호출되지만 블록의 코드는 호출되지 않습니다.

또한, 컴파일러는, "사용되지 않는 표현의 결과"라고

completionHandler; 

에서 나에게 animateViewConstraintChange 방법에 오류를주고있다.

감사합니다.

답변

3

는 괄호로 호출 블록해야합니다

} completion:^(BOOL finished){ 
       completionHandler(); 
     }]; 
+0

U 다 남자! 나는 그것이 쉬운 일임을 알았다. – headache

관련 문제