2017-01-11 9 views
-1

제 목표는 view1에서 view2로 또는 그 반대로 플립 애니메이션을 수행하는 것입니다. 전체보기가 아닌보기 만 뒤집기를 원합니다.맞춤 플립 애니메이션 segue - Swift 3

다음과 같이 설정하십시오. 내 스토리 보드에 navigationController에 포함 된보기 컨트롤러 (fromViewController)가 있습니다. 나는 두 번째 뷰 컨트롤러 (toViewController)에 segue를 그리고 커스텀 segue로 만들었다. 이제 플립 애니메이션을 추가하여 뷰 컨트롤러의 뷰를 왼쪽에서 오른쪽으로 그리고 오른쪽에서 왼쪽으로 뒤집을 수 있습니다. 앞으로 애니메이션이 이미 작동하지만 (fromViewController에서 toViewController로) 역방향 애니메이션이 작동하지 않습니다. 여기에 비슷한 질문을 많이했는데 내 요구에 맞는 대답을 찾을 수 없었습니다.

나는 누군가가 나를 도울 수 있기를 바랍니다.

맞춤 세그먼트의 클래스는 FlipSegue입니다.

import UIKit 

extension UIViewController{ 
    var isVisible: Bool{ 
     return self.isViewLoaded && self.view.window != nil 
    } 
} 

class FlipSegue: UIStoryboardSegue { 

    override func perform() { 
     let fromViewController = self.source 
     let toViewController = self.destination 

     if fromViewController.isVisible{ 
      UIView.transition(from: fromViewController.view, to: toViewController.view, duration: 1, options: .transitionFlipFromLeft, completion: nil) 
     } 
     else{ 
      UIView.transition(from: toViewController.view, to: fromViewController.view, duration: 1, options: .transitionFlipFromRight, completion: nil) 
     } 
    } 
} 

참고 : 여기 내 코드입니다 toViewController가있는 navigationController의 일부가 아닙니다.

EDIT : 탐색 컨트롤러의 왼쪽에있는 UIBarButton을 탭하여 세그먼트를 수행합니다. Button은 FlipSegue 클래스에서 perform 함수를 호출합니다. 아마도 문제는 toViewController가 네비게이션 스택의 일부가 아니라는 것입니다. 그래서 그것을 탐색 스택에 추가 한 다음 뒤로 단추가 있고 표준 애니메이션을 사용하여 fromViewController로 돌아갈 수 있습니다. 그러나 이것은 제가 원한 것이 아닙니다.

+0

"...하지만 역방향 애니메이션은 [작동하지 않습니까?]"그건별로 유용하지 않습니다. 무슨 일이야? 당신의 else 절은 발사되고 있습니까? 뷰가 바뀌었지만 애니메이션이 잘못 되었습니까? –

+0

예 else 절이 실행 중이고 – user1895268

+0

내가 요청한 다른 정보는 어떻게됩니까? 어서, 20 가지 질문을하지 마라! –

답변

0

나는 이것을 시도하지 않았지만 두 경우 모두 from:fromViewcontroller.view을 사용해야한다. 왜냐하면 백 그라운드에서 from은 여전히 ​​시작 VC이다.

+0

죄송하지만 이것은 작동하지 않습니다 .. 이전과 같은 행동 – user1895268