gpt4 book ai didi

ios - Swift 删除对 View Controller 的引用

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

我正在通过导航 Controller 以编程方式添加 View Controller ,因为我需要在显示 Controller 时访问导航栏。

我目前正在通过以下方法执行此操作,但是我需要能够在用户点击关闭按钮时删除对 View Controller 的引用。

let settingsController = storyboard?.instantiateViewController(withIdentifier: "SettingsController") as! SettingsController
settingsController.view.alpha = 0
settingsController.view.transform = CGAffineTransform(translationX: 0, y: self.view.frame.height)
self.view.addSubview(settingsController.view)
UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseOut, animations: {
print(self.view.frame.height)
settingsController.view.transform = CGAffineTransform(translationX: 0, y: self.view.frame.height - 142)
settingsController.view.alpha = 1
}, completion: nil)

有没有办法在当前的 self.dismiss 或 self.popViewController 不起作用时执行此操作?

谢谢

更新

我尝试使用标准的 perform segue(如下)实现此解决方案,方法是提供模态选项,因为我需要保持导航栏处于事件状态。设置 Controller 高度小于 View 框架。这没有用,所以我正在尝试上述方法。

    self.definesPresentationContext = true
self.modalPresentationStyle = .overCurrentContext
self.modalTransitionStyle = .coverVertical
self.performSegue(withIdentifier: "SettingsSegue", sender: nil)

当我调用设置 Controller 并关闭时,另一个设置 Controller 被添加,导致多个设置 Controller 。这是我的问题。

最佳答案

var settingsController : 设置 Controller !

@IBAction func btnNext(_ sender: Any) {
settingsController = storyboard?.instantiateViewController(withIdentifier: "SettingsController") as! SettingsController
settingsController.view.alpha = 1
settingsController.view.transform = CGAffineTransform(translationX: 0, y: self.view.frame.height)
self.view.addSubview(settingsController.view)
UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseOut, animations: {
print(self.view.frame.height)
self.settingsController.view.transform = CGAffineTransform(translationX: 0, y: self.view.frame.height - 142)
self.settingsController.view.alpha = 1
}, completion: nil)

}

@IBAction func btnDismiss(_ sender: Any) {
self.settingsController.view.removeFromSuperview()
}

关于ios - Swift 删除对 View Controller 的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42804780/

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