gpt4 book ai didi

ios - 当前 View Controller 时关闭 View Controller 的问题

转载 作者:行者123 更新时间:2023-11-28 13:59:03 25 4
gpt4 key购买 nike

我有 RootVC: UITableViewController,其中包含一个密码列表。当我单击密码时,它们会在 ViewPasswordVC 中打开。当我单击“编辑”密码时,在 EditPasswordVC 中打开。当我在 EditPasswordVC 中单击“取消”或“保存”时,我只后退了一步,但我想回到 RootVC。(VC = View Controller )

在这里你可以看到我的问题:

enter image description here

这是我在 didSelectRowAt 中点击 RootVC 上的密码时的代码:

let viewPasswordVC = ViewPasswordVC()
self.navigationController?.pushViewController(viewPasswordVC, animated: true)

这是我在密码中点击“编辑”时的代码:

let editPasswordVC = EditPasswordVC()
let navigationController = UINavigationController(rootViewController: editPasswordVC)
self.present(navigationController, animated: true, completion: nil)

这是当我在 EditPasswordVC 中单击“取消”时的代码(同样的事情和当我单击保存时):

dismiss(animated: true, completion: nil)

我该如何解决这个问题?我希望当我在 EditPasswordVC 中单击“取消”或“保存”时,让我回到 RootVC,而不是 ViewPasswordVC。

谢谢

最佳答案

您实际上是在关闭当前的 ViewController,但之前的 ViewController 不是第一个,因此您不能指望进入 RootVC。您必须声明当您关闭 EditPasswordVC 时会发生什么,要实现此目的,请执行以下步骤:

首先为 EditPasswordVC 创建委托(delegate)协议(protocol)

protocol EditPasswordVCDelegate {
func editDidEnd()
}

然后在 EditPasswordVC 中为委托(delegate)创建变量

var delegate: EditPasswordVCDelegate?

接下来将这个协议(protocol)实现到ViewPasswordVC

class ViewPasswordVC: UIViewController, EditPasswordVCDelegate

然后在你呈现 editPasswordVC 之前将其委托(delegate)设置为 self

let editPasswordVC = EditPasswordVC()
editPasswordVC.delegate = self

现在在 ViewPasswordVC 中声明您希望在编辑结束时转到根目录。所以添加EditPasswordVCDelegate委托(delegate)方法

func editDidEnd() {
navigationController?.popToRootViewController(animated: true)
}

现在声明当 EditPasswordVC 确实消失时应该发生什么。你想在委托(delegate)上调用方法

override func viewDidDisappear(_ animated: Bool) {
delegate?.editDidEnd()
}

现在你可以打电话了

dismiss(animated: true, completion: nil)

关于ios - 当前 View Controller 时关闭 View Controller 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53686050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com