【问题标题】:How to reuse view controller objects in swift with navigation controller如何使用导航控制器快速重用视图控制器对象
【发布时间】:2019-09-04 12:19:54
【问题描述】:

我的应用程序有一个用户个人资料页面,我可以从该个人资料移动到记录,从记录移动到个人资料等(如 instagram、facebook)。这种转变可能是无止境的。我将导航控制器与 performSegue 一起使用。我怎样才能重用视图控制器对象,这样我就不必每次转换时都创建新的?否则,在 25 次迭代后,我的 RAM 就会用完。

【问题讨论】:

  • 你能分享一些代码快照或 UI 吗?
  • 例如当用户点击头像时:@objc func openProfileSegue(notification: NSNotification){ self.performSegue(withIdentifier: "openProfileSegue", sender: self) } 所以,我打开新的 Segue 并创建新的视图控制器的对象(它占用了 20 mb 的 RAM)
  • 阅读“singleton”我认为它会帮助你并解决你的问题。
  • 好的,谢谢,我会试着找一些例子

标签: ios swift view controller navigation


【解决方案1】:

请找到配置文件视图控制器并弹出该视图控制器。请看下面的代码。

   for viewController in self.navigationController?.viewControllers ?? [] {
        if viewController is ProfileViewController {
            self.navigationController?.popToViewController(viewController, animated: true)
        }
    }

对于动画,您可以使用下面的代码,使动画看起来像 pushviewController

    let transition = CATransition()
    transition.duration = 0.5
    transition.type = CATransitionType.push
    transition.subtype = CATransitionSubtype.fromRight
    transition.timingFunction = CAMediaTimingFunction(name:CAMediaTimingFunctionName.linear)
    self.navigationController?.view.layer.add(transition, forKey: kCATransition)
    self.navigationController?.popToViewController(viewController, animated: false)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    相关资源
    最近更新 更多