HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 如何在Swift中替换ViewController?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用以下代码呈现了ViewController1:

let vc1 = ViewController1()
present(vc1,animated: true,completion: nil)

现在,我想在ViewController1中显示ViewController2.@H_262_10@

@IBACtion func buttonEvent(_ sender: UIButton) {
    let vc2 = ViewController2()
    self.present(vc2,completion: nil)
}

问题是:我想显示ViewContoller2,而当调用按钮事件时,当前的ViewController被解除.@H_262_10@

这样做我想动画.@H_262_10@

谢谢.@H_262_10@

解决方法

您可以通过navigationController实现此目的,如下所示:

guard var viewControllers = sourceViewController.navigationController?.viewControllers else { return }

// FIXME: Result of call to 'popLast()' is unused
// Pop sourceViewController
viewControllers.popLast()

// Push targetViewController
viewControllers.append(targetViewController)

sourceViewController.navigationController?.setViewControllers(viewControllers,animated: truE)

首先在导航堆栈中获取viewControllers.弹出当前并追加目标.然后,将堆栈设置为更新的viewControllers.@H_262_10@

附加@H_262_10@

(对于那些不使用NavigationController的人)@H_262_10@

我在给定答案中意识到可能存在问题.因此,我想做这个补充.继续之前检查documentation of parent.我想强调这一部分:@H_262_10@

简而言之,如果你想要关闭当前的UIViewController(sourceViewController)并呈现下一个(targetViewController),你应该通过presentViewController调用current()调用当前的.@H_262_10@

weak var presenTingViewController = self.presenTingViewController

sourceViewController.dismiss(animated: true,completion: {
    presenTingViewController?.present(targetViewController,animated: false,completion: nil)
})

然这次可能会看到转换,但在sourceViewController的dismiss()完成结束时,presentViewController将一直显示,直到targetViewController出现.我不知道你是否期望这种行为.如果不是,我现在无法提出解决方法来防止这种情况发生.@H_262_10@

大佬总结

以上是大佬教程为你收集整理的ios – 如何在Swift中替换ViewController?全部内容,希望文章能够帮你解决ios – 如何在Swift中替换ViewController?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。