【问题标题】:How to call UIViewController's transitionFromViewController in Swift?如何在 Swift 中调用 UIViewController 的 transitionFromViewController?
【发布时间】:2014-07-04 09:23:26
【问题描述】:

我应该如何用 Swift 实现这个方法调用?

[containerViewController transitionFromViewController:fromViewController
                                         toViewController:toViewController
                                                 duration:0.2
                                                  options:UIViewAnimationOptionTransitionCrossDissolve
                                               animations:nil
                                               completion:^(BOOL finished) {
                                                   [fromViewController removeFromParentViewController];
                                                   [toViewController didMoveToParentViewController:containerViewController];
                                                   toViewController.view.frame = containerViewController.view.bounds;
                                               }];

====

    containerViewController.transitionFromViewController(
        fromViewController,
        toViewController,
        0.2,
        UIViewAnimationOptionTransitionCrossDissolve,
        nil,
        nil)

我收到此错误:使用未解析的标识符“UIViewAnimationOptionTransitionCrossDissolve”

【问题讨论】:

  • 您是否关闭了 Xcode 代码完成功能?
  • 代码完成设置为 ON
  • 动画使用 UIViewAnimationOptions.TransitionCrossDissolve
  • 枚举(终于!)在 Swift 中命名空间:)

标签: uiviewcontroller swift


【解决方案1】:

工作解决方案:

containerViewController.transitionFromViewController(
            fromViewController,
            toViewController: toViewController,
            duration: 0.2,
            options: UIViewAnimationOptions.TransitionCrossDissolve,
            nil,
            completion: { finished in
                fromViewController.removeFromParentViewController()
                toViewController.didMoveToParentViewController(containerViewController)
                toViewController.view.frame = containerViewController.view.bounds
            })

【讨论】:

  • 在调用 remove 之前,您应该根据文档调用 willMoveToParentViewController(nil)
【解决方案2】:

.TransitionCrossDissolve 而不是UIViewAnimationOptionTransitionCrossDissolveUIViewAnimationOption 类型是通过可以推断的方法已知的。

【讨论】:

    【解决方案3】:

    斯威夫特 3:

    containerViewController.transition(from: fromViewController,
                                       to: toViewController,
                                       duration: 0.2,
                                       options: .transitionCrossDissolve,
                                       nil,
                                       completion: { _ in
                                        fromViewController.removeFromParentViewController()
                                        toViewController.didMove(toParentViewController: containerViewController)
                                        toViewController.view.frame = containerViewController.view.bounds
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多