Dismiss删除多个视图

时间:2017-02-08 16:16:41

标签: ios swift swift3

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

让我从头开始。

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

所以我总共打开了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)

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

2 个答案:

答案 0 :(得分:3)

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

你应该用pop来关闭视图。

_ = navigationController?.popViewController(animated: true)

希望这能解决你的问题

答案 1 :(得分:1)

navigationController?.popViewController(animated: true) 它将返回上一个视图控制器。