关闭删除多个视图

Posted

技术标签:

【中文标题】关闭删除多个视图【英文标题】:Dismiss removes multiple views 【发布时间】:2017-02-08 16:16:41 【问题描述】:

我在视图控制器中的解除功能方面遇到了一些问题。

让我从头开始。

我登录到我的应用程序并被带到主仪表板页面。 我单击导航按钮打开导航页面,该页面作为模型打开。 在导航页面上,我单击按钮查看我的个人资料。 在我的个人资料页面上,我选择编辑图标以转到编辑个人资料页面。 在编辑个人资料页面上,我选择了一个头像。

因此,当我关闭最后一个页面时,我总共打开了 5 个不同的页面,这让我一直回到导航,这实际上是关闭了 3 个页面。有什么我必须做的,它只会关闭最后一个视图控制器吗?

我有一个页面可以选择一个头像,打开方式如下:

let storyBoard: UIStoryboard = UIStoryboard(name: "Profile", bundle: nil)
let viewController = storyBoard.instantiateViewController(withIdentifier: "UserAvatarController") as! UserAvatarController
viewController.modalPresentationStyle = .popover
viewController.avatars = self.avatars
viewController.delegate = self

self.navigationController?.pushViewController(viewController, animated: true)

当我在页面上选择了我的头像时,点击一个按钮并触发:

if (self.selectedImage > -1) 
    self.delegate?.selectAvatar(imageId: self.selectedImage)


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

然后它带我回到导航页面并丢失了编辑个人资料页面中的所有数据。

【问题讨论】:

为什么要把我的问题记下来? 【参考方案1】:

我认为您正在使用 pushViewController 打开视图并使用关闭关闭视图。

你应该用 pop 关闭视图。

_ = navigationController?.popViewController(animated: true)

希望这能解决您的问题

【讨论】:

非常感谢 :) 这很有效。我会掌握这一切的,很可能就在苹果再次改变这一切之前,哈哈【参考方案2】:

只要navigationController?.popViewController(animated: true) 它将回到之前的视图控制器。

【讨论】:

以上是关于关闭删除多个视图的主要内容,如果未能解决你的问题,请参考以下文章

UWP 多个视图未关闭

关闭如何删除视图控制器的内存?

关闭多个视图控制器

同时关闭多个视图控制器

创建具有多个对象/层的视图 [关闭]

如何使用 SwiftUI 关闭多个视图