Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIViewControlleranimated转换未触发_Ios_Uiviewcontroller_Swift3_Uiviewanimationtransition - Fatal编程技术网

Ios UIViewControlleranimated转换未触发

Ios UIViewControlleranimated转换未触发,ios,uiviewcontroller,swift3,uiviewanimationtransition,Ios,Uiviewcontroller,Swift3,Uiviewanimationtransition,正在进行simpel转换,但没有收到呼叫。我没有收到我在这里错过的内容。有人能帮助我吗?没有收到任何错误或警告 动画类-: import UIKit class CustomPresentAnimationController: NSObject,UIViewControllerAnimatedTransitioning { public func transitionDuration(using transitionContext: UIViewControllerContextT

正在进行simpel转换,但没有收到呼叫。我没有收到我在这里错过的内容。有人能帮助我吗?没有收到任何错误或警告

动画类-:

import UIKit

class CustomPresentAnimationController: NSObject,UIViewControllerAnimatedTransitioning {

    public func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval
    {
      return 2.5
    }
    // This method can only  be a nop if the transition is interactive and not a percentDriven interactive transition.
    public func animateTransition(using transitionContext: UIViewControllerContextTransitioning)

    {
       let fromViewController = transitionContext.viewController(forKey: UITransitionContextViewControllerKey.from)
        let toViewController = transitionContext.viewController(forKey: UITransitionContextViewControllerKey.to)
        let finalViewcontroller = transitionContext.finalFrame(for: toViewController!)
        let bounds = UIScreen.main.bounds
        toViewController?.view.frame = finalViewcontroller.offsetBy(dx: 0, dy: bounds.size.height)
        print(transitionDuration(using: transitionContext))
        let containerView = transitionContext.containerView
        containerView.addSubview((toViewController?.view)!)

        UIView.animate(withDuration: transitionDuration(using: transitionContext),delay: 0.1,options: UIViewAnimationOptions.curveEaseIn,animations: { () -> Void in
            fromViewController?.view.alpha = 0.5
            toViewController?.view.frame = finalViewcontroller
        },completion: { (finished) -> Void in

            transitionContext.completeTransition(true)
            fromViewController?.view.alpha = 1.0
        })
    }


}
从视图控制器-:

import UIKit

class ItemsTableViewController: UITableViewController,UIViewControllerTransitioningDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()

    }
    let customPresentAnimationController = CustomPresentAnimationController()

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "showAction" {
            let toViewController = segue.destination as! ActionViewController
            toViewController.transitioningDelegate = self
        }
    }
    override func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 5
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "ItemCell", for: indexPath) as UITableViewCell
        cell.textLabel?.text = "Item 0\(indexPath.row + 1)"
        return cell
    }

    func animationControllerForPresentedController(presented: UIViewController, presentingController presenting: UIViewController, sourceController source: UIViewController) -> UIViewControllerAnimatedTransitioning? {
        return customPresentAnimationController
    }

}
import UIKit

class ActionViewController: UIViewController {

    @IBAction func dismiss(_ sender: UIButton) {
        self.dismiss(animated: true, completion: nil)
    }

}
ToViewcontroller-:

import UIKit

class ItemsTableViewController: UITableViewController,UIViewControllerTransitioningDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()

    }
    let customPresentAnimationController = CustomPresentAnimationController()

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "showAction" {
            let toViewController = segue.destination as! ActionViewController
            toViewController.transitioningDelegate = self
        }
    }
    override func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 5
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "ItemCell", for: indexPath) as UITableViewCell
        cell.textLabel?.text = "Item 0\(indexPath.row + 1)"
        return cell
    }

    func animationControllerForPresentedController(presented: UIViewController, presentingController presenting: UIViewController, sourceController source: UIViewController) -> UIViewControllerAnimatedTransitioning? {
        return customPresentAnimationController
    }

}
import UIKit

class ActionViewController: UIViewController {

    @IBAction func dismiss(_ sender: UIButton) {
        self.dismiss(animated: true, completion: nil)
    }

}

看起来您已经复制/粘贴了该方法的swift 2版本,现在签名不同了:

func animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? {
    return Transition()
}

func animationController(forPresented presented: UIViewController, presenting: UIViewController, source: UIViewController) -> UIViewControllerAnimatedTransitioning? {
    return Transition()
}

编辑:也可能最好返回转换的新实例,并去掉顶部的
let

看起来您已经复制/粘贴了该方法的swift 2版本,现在签名不同了:

func animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? {
    return Transition()
}

func animationController(forPresented presented: UIViewController, presenting: UIViewController, source: UIViewController) -> UIViewControllerAnimatedTransitioning? {
    return Transition()
}

编辑:可能最好返回一个新的转换实例,去掉顶部的
let

谢谢你的帮助。谢谢你的帮助。