【问题标题】:How to destroy instance of view controller after performing segue执行segue后如何销毁视图控制器的实例
【发布时间】:2016-02-23 11:29:39
【问题描述】:

我使用 performSegueWithIdentifier 在视图控制器之间导航

我有一个多行的 tableView,当一行被操作时,我调用 webViewController 来使用 segue 播放选定的资源

performSegueWithIdentifier("Play", sender: nil)

关联:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if(segue.identifier == "Play") {
        let detailVC = segue.destinationViewController as! WebViewController
        detailVC.courseToPlay = self.courseToPlay
    }
}

而且,在 WebViewController 上,我有一个返回列表的按钮,我想在返回上销毁 webViewController 的实例

我的故事板中没有 NavigationController,所以,这条线不起作用

navigationController.popViewControllerAnimated(true)

我再次使用 segue 返回:

performSegueWithIdentifier("closePlayer", sender: nil)

但是每个 segue 动作实例都是一个新的视图控制器,它们永远不会真正从内存中释放出来,它们似乎只是被隐藏了

例如:在 Safari 调试器中,我可以看到很多页面,并且我总是可以在控制台中与这些页面进行交互

如何在场景变化时正确“销毁”视图

【问题讨论】:

    标签: swift uiviewcontroller swift2 segue


    【解决方案1】:

    Swift3:

    self.dismiss(animated: true, completion: nil)
    

    希望对你有帮助。

    谢谢

    【讨论】:

      【解决方案2】:

      如果是模态转场,你可以使用

      dismissViewControllerAnimated(true, completion: nil)
      

      关闭 webViewController 而不是另一个 segue

      【讨论】:

        猜你喜欢
        • 2014-02-07
        • 1970-01-01
        • 1970-01-01
        • 2012-01-12
        • 1970-01-01
        • 2016-12-31
        • 2019-08-25
        • 1970-01-01
        • 2015-10-25
        相关资源
        最近更新 更多