在ViewControllers之间转换后无法保存数据

时间:2015-04-18 04:33:19

标签: ios swift catransition

我的应用

的目的
  • 我的小项目中有两个ViewControllers,FrontSideViewControllerBackSideViewController
  • 我即将使用FrontSideViewControllerBackSideViewController翻转为CATransition,同时可以保存每个ViewController的数据。

问题描述

  1. 意见以animation似乎不是UIAnimationTransition.FlipFromLeft(or)Right的意外方式转换。
  2. 翻阅视图后,无法保存以前的视图数据,这意味着当我翻回旧视图时,其微小的数据(如textField's text)就不见了。
  3. gif

    我的代码

    • 相同的逻辑函数,用于在两个Classes中使用的视图之间进行翻转。


    FrontSideViewController.swift

    class FrontSideViewController: UIViewController {
    
    var frontSideViewController: FrontSideViewController?
    var backSideViewController: BackSideViewController?
    var frontSide: Bool = true
    @IBOutlet weak var flip_1Button: UIButton!
    override func viewDidLoad() {
        super.viewDidLoad()
        frontSideViewController = storyboard?.instantiateViewControllerWithIdentifier("FrontSideViewController") as? FrontSideViewController
        backSideViewController = storyboard?.instantiateViewControllerWithIdentifier("BackSideViewController") as? BackSideViewController
        flip_1Button.addTarget(self, action: "flipViews", forControlEvents: UIControlEvents.TouchUpInside)
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    @IBAction func textFieldDoneEditing(sender: UITextField) {
        sender.resignFirstResponder()
    }
    
    func flipViews() {
    
        UIView.beginAnimations("ViewSwitch", context: nil)
        UIView.setAnimationDuration(0.6)
        UIView.setAnimationCurve(.EaseInOut)
        UIView.setAnimationTransition(.FlipFromLeft, forView: view, cache: true)
        backSideViewController?.view.frame = self.view.frame
        frontSideViewController?.willMoveToParentViewController(nil)
        frontSideViewController?.view.removeFromSuperview()
        frontSideViewController?.removeFromParentViewController()
        self.addChildViewController(backSideViewController!)
        self.view.addSubview(backSideViewController!.view)
        backSideViewController?.didMoveToParentViewController(self)
    

    } }

    BackSideViewController.swift

    class BackSideViewController: UIViewController {
    
    var frontSideViewController: FrontSideViewController?
    var backSideViewController: BackSideViewController?
    @IBOutlet weak var flip_2Button: UIButton!
    override func viewDidLoad() {
        super.viewDidLoad()
        frontSideViewController = storyboard?.instantiateViewControllerWithIdentifier("FrontSideViewController") as? FrontSideViewController
        backSideViewController = storyboard?.instantiateViewControllerWithIdentifier("BackSideViewController") as? BackSideViewController
    
        flip_2Button.addTarget(self, action: "flipViews", forControlEvents: UIControlEvents.TouchUpInside)
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    func flipViews() {
    
        UIView.beginAnimations("ViewSwitch", context: nil)
        UIView.setAnimationDuration(0.6)
        UIView.setAnimationCurve(.EaseInOut)
        UIView.setAnimationTransition(.FlipFromRight, forView: view, cache: true)
        frontSideViewController?.view.frame = self.view.frame
        backSideViewController?.willMoveToParentViewController(nil)
        backSideViewController?.view.removeFromSuperview()
        backSideViewController?.removeFromParentViewController()
        self.addChildViewController(frontSideViewController!)
        self.view.addSubview(frontSideViewController!.view)
        frontSideViewController?.didMoveToParentViewController(self)
    }
    


    请教我如何解决这两个问题。

    感谢您的帮助。

    Ethan Joe

0 个答案:

没有答案