在Swift中没有动画的自定义segue

时间:2015-06-16 14:16:56

标签: ios swift uiviewcontroller segue

我正在尝试在没有任何动画的情况下在两个视图控制器之间进行自定义segue。一切正常,因为我期待只有控制台给我以下信息:

  

2015-06-16 12:19:01.537 prototyp_2 [42453:9048104]不平衡调用   开始/结束外观过渡。

这是我的代码:

class Segue_forward: UIStoryboardSegue {

    override func perform() {

        // zdroj a destinace do lokálních proměnných
        var firstVCView = self.sourceViewController.view as UIView!
        var secondVCView = self.destinationViewController.view as UIView!

        // rozměry displeje
        let screenWidth = UIScreen.mainScreen().bounds.size.width
        let screenHeight = UIScreen.mainScreen().bounds.size.height

        // initial position of destination view
        secondVCView.frame = CGRect(x: 0.0, y: 0.0, width: screenWidth, height: screenHeight)

        // protože destination VC není subview okna aplikace tak to musime napravit
        let window = UIApplication.sharedApplication().keyWindow
        window?.insertSubview(secondVCView, aboveSubview: firstVCView)

        // animace
        UIView.animateWithDuration(0.0, animations: { () -> Void in

            firstVCView.frame = CGRectOffset(firstVCView.frame, 0.0, 0.0)
            secondVCView.frame = CGRectOffset(secondVCView.frame, 0.0, 0.0)

        }) { (Finished) -> Void in

            self.sourceViewController.presentViewController(self.destinationViewController as! UIViewController, animated: false, completion: nil)

        }


    }

}

这是我的行动:

@IBAction func nextQuestion(sender: AnyObject) {
   self.performSegueWithIdentifier("id_forwardSegue", sender: self)
}

2 个答案:

答案 0 :(得分:2)

不用动画即可:

override func perform() {
    self.sourceViewController.presentViewController(self.destinationViewController as! UIViewController, animated: false, completion: nil)
}

答案 1 :(得分:0)

使用parentViewController:

呈现新的UIViewController
self.sourceViewController.parentViewController?.presentViewController(YOUR_VIEW_CONTROLLER, animated: false, completion: nil)