gpt4 book ai didi

ios - 如何删除一个 VC 然后直接添加另一个 VC

转载 作者:行者123 更新时间:2023-12-01 18:39:50 30 4
gpt4 key购买 nike

我有一个主 VC(称为 VC A),它有一个子 VC(VC B)。当我点击 VC B 上的按钮时,我将其作为子 VC 关闭,但是一旦完成,我想实例化另一个 VC(VC C)。我通过在 VC B 上创建一个 bool 来做到这一点,如果 true 调用 VC A 上的一个函数来创建一个新的子 VC (VC C)。所有的函数调用都在进行,但是 VC C 永远不会被添加。下面我添加了代码:

VC乙:

 func removeAnimate()
{

self.willMove(toParentViewController: nil)
self.view.removeFromSuperview()
self.removeFromParentViewController()

didTransition = true

if didTransition == true {
callAddVC()
}

}

func callAddVC() {
let instVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "MainViewController") as! MainViewController

instVC.addVC()
}

VC一:
  func addVC () {


let popvc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "CommentsTabViewController") as! CommentsTabViewController

self.addChildViewController(popvc)
popvc.view.center = self.view.center

popvc.view.bounds.size = CGSize(width: 337, height: 503)

self.view.addSubview(popvc.view)

popvc.didMove(toParentViewController: self)
}

最佳答案

您正在创建 ViewController A (MainViewController) 的新实例在 callAddVC() ,这是错误的。您没有使用 ViewController A 的现有实例

您必须通过 Viewcontroller A添加 Viewcontroller B 时的实例

View Controller A

  let viewControllerB = // Get the instance of UIViewControllerB from storyboard
viewControllerB.vcA = self

View Controller B
  class UIViewControllerB {
weak var vcA: UIViewControllerA?

func removeAnimate() {

self.willMove(toParentViewController: nil)
self.view.removeFromSuperview()
self.removeFromParentViewController()

didTransition = true

if didTransition == true {
vcA.addVC(). //You have to call addVC() by using the reference of the main view controller.
}
}

}

关于ios - 如何删除一个 VC 然后直接添加另一个 VC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45083762/

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