dissmissviewcontroller / unwind segue /(custom)segue ...哪一个,何时以及为什么?

时间:2015-05-11 21:34:39

标签: swift memory-leaks segue uistoryboardsegue unwind-segue

我刚刚完成了我的第一个应用。当我发现(10MB)内存泄漏时,我正准备提交它。根据{{​​3}},它是由我使用的segues引起的。

据我所知,目前我的应用程序每次执行segue时都会生成一个新视图。我一直在阅读很多帖子,最终让我感到困惑。 我应该使用dissmissViewController吗?放松冥想?

this post对于放松segue非常有帮助。但是从UI的角度来看,我喜欢当前的performSegueWithIdentifier解决方案,因为我已经制作了漂亮的水平滑动段。有没有办法在使用展开segue时自定义转换?

我希望有可能在自定义segue代码中简单地“杀死”以前的ViewController ......

ps:以下是其中一个segue的代码:

import UIKit

class FirstCustomSegueUnwind: UIStoryboardSegue {
override func perform() {
    var firstVCView = self.sourceViewController.view as UIView!
    var secondVCView = self.destinationViewController.view as UIView!


    let screenWidth = UIScreen.mainScreen().bounds.size.width
    let screenHeight = UIScreen.mainScreen().bounds.size.height

    secondVCView.frame = CGRectMake(-screenWidth, 0.0, screenWidth, screenHeight)

    let window = UIApplication.sharedApplication().keyWindow
    window?.insertSubview(secondVCView, aboveSubview: firstVCView)

    UIView.animateWithDuration(0.4, animations: { () -> Void in
        firstVCView.frame = CGRectOffset(firstVCView.frame, screenWidth, 0.0)
        secondVCView.frame = CGRectOffset(secondVCView.frame, screenWidth, 0.0)


        }) { (Finished) -> Void in
            self.sourceViewController.presentViewController(self.destinationViewController as! UIViewController, animated: false, completion: nil)

    }


}
}

0 个答案:

没有答案