ios - UIView.animateWithDuration 완료

출처 ios swift xcode uiviewanimation

제목에 언급 된 방법의 신속한 구현에 관한 질문이 있습니다. 이렇게하면 :

leadingSpaceConstraint.constant = 0
UIView.animateWithDuration(0.3, animations: {
    self.view.layoutIfNeeded()
}, completion: { (complete: Bool) in
    self.navigationController.returnToRootViewController(true)
})


다음 문제가 발생합니다. 호출에서 매개 변수 '지연'에 대한 인수가 없습니다. 이것은 완성 부분에 self.navigationController.returnToRootViewController ()가있는 경우에만 발생합니다. 이 문을 다음과 같은 별도의 방법으로 추출하면 :

leadingSpaceConstraint.constant = 0
UIView.animateWithDuration(0.3, animations: {
    self.view.layoutIfNeeded()
}, completion: { (complete: Bool) in
    self.returnToRootViewController()
})

func returnToRootViewController() {
    navigationController.popToRootViewControllerAnimated(true)
}


그런 다음 완벽하게 작동하고 내가 원하는 것을 정확하게 수행합니다. 물론 이것은 이상적인 솔루션이 아니며 해결 방법과 비슷합니다. 누구든지 내가 뭘 잘못했는지 또는 왜 Xcode (베타 6)가 이런 식으로 작동하는지 말해 줄 수 있습니까?
popToRootViewControllerAnimatedreturnToRootViewController의 메소드가 아니기 때문에 첫 번째 스 니펫에서 UUNavigationController를 의미한다고 생각합니다.

문제는 popToRootViewControllerAnimated에 반환 값이 있다는 것입니다 (탐색 스택에서 제거 된 뷰 컨트롤러 배열). 반환 값을 버리려고해도 문제가 발생합니다.

Swift가 클로저의 마지막 줄로 반환 값이있는 함수 / 메서드 호출을 볼 때, 암시 적 반환 값에 클로저 단축 구문을 사용하고 있다고 가정합니다. (someStrings.map({ $0.uppercaseString })와 같은 것을 작성할 수있는 종류입니다.) 그러면 void를 반환하는 클로저를 전달할 것으로 예상되는 위치에 무언가를 반환하는 클로저가 있기 때문에 메서드 호출은 유형 검사에 실패합니다. 유형 검사 오류는 잘못된 진단 메시지를 생성하는 경향이 있습니다. 가지고있는 코드와 생성하는 오류 메시지를 filed a bug 가지고 있다면 도움이 될 것입니다.

어쨌든, 클로저의 마지막 줄을 값이있는 표현식이 아니도록함으로써이 문제를 해결할 수 있습니다. 나는 명시적인 return를 선호합니다 :

UIView.animateWithDuration(0.3, animations: {
    self.view.layoutIfNeeded()
}, completion: { (complete: Bool) in
    self.navigationController.popToRootViewControllerAnimated(true)
    return
})


사용하지 않는 변수에 popToRootViewControllerAnimated 호출을 할당하거나 그 뒤에 아무것도하지 않는 식을 넣을 수도 있지만 return 문이 가장 명확하다고 생각합니다.
관련 기사

ios - Swift에서 Core Data로부터받은 배열 정렬

ios - UIcollectionview에서 특정 셀에 대한 참조 가져 오기

ios - SWIFT-xcode 6 베타 6.의 KVO. observeValueForKeyPath가 더 이상 호출되지 않습니다.

ios - iOS8에서 VFR-Reader 충돌

ios - iOS 8 확장의 TBXML이 빌드되지 않음

ios - 사진을 찍고 카메라 롤에 저장

ios - iOS 사용자 정의 UITableViewCell 클래스 하위보기가 null을 반환합니다.

ios - NSString에서 중복 된 단어를 제거하고 새 NSString으로 저장

ios - SpriteKit : 전체 노드 겹침 감지

ios - Swift에서 두 개의 CGFloat의 최소값을 얻으려면 어떻게해야합니까? [복제]