gpt4 book ai didi

ios - 如何检查 subview Controller 是否存在

转载 作者:行者123 更新时间:2023-11-28 10:34:30 26 4
gpt4 key购买 nike

我正在实现样式菜单中的幻灯片。

菜单被添加为显示时的 subview Controller ,然后以动画方式进入 View 。一旦它关闭,我就将其从 View 中删除。

我想介绍一个 UIPanGestureRecognizer,这样用户就可以将它滑动到 View 中,但是添加 View 的逻辑只会在按下打开时触发。

我想避免在每个手势上多次添加它,所以我在考虑检查它是否存在,如果不添加,则设置动画。

惰性 var menuController = MenuController()

private var menuWidth: CGFloat = 300
private let keyWindow = UIApplication.shared.keyWindow

override func viewDidLoad() {
super.viewDidLoad()

setupNavigationItems()
setupTableView()

menuController.view.frame = CGRect(x: -menuWidth, y: 0, width: menuWidth, height: view.frame.height)

let panGesture = UIPanGestureRecognizer(target: self, action: #selector(handlePan))
view.addGestureRecognizer(panGesture)

}

@objc func handlePan(gesture: UIPanGestureRecognizer) {


let translation = gesture.translation(in: view)
let transform = CGAffineTransform(translationX: translation.x, y: 0)
menuController.view.transform = transform
navigationController?.view.transform = transform

}

@objc func handleOpen() {
keyWindow?.addSubview(menuController.view)
animateMenuController(transform: CGAffineTransform(translationX: self.menuWidth, y: 0)) { }

addChild(menuController)

}

@objc func handleHide() {
animateMenuController(transform: .identity) { [weak self] in
self?.menuController.view.removeFromSuperview()
self?.menuController.removeFromParent()
}
}

我希望做这样的事情

    @objc func handlePan(gesture: UIPanGestureRecognizer) {

if view.subviews.contains(MenuController) {
print("yes")
}


let translation = gesture.translation(in: view)
let transform = CGAffineTransform(translationX: translation.x, y: 0)
menuController.view.transform = transform
navigationController?.view.transform = transform

}

但这是不正确的。

最佳答案

您可以尝试使用 vc 的 children 属性

if !children.isEmpty { // this assumes 1 vc tell if you have more
print("YES")
}

if let _ = children.first(where:{ $0 is menuController})  {  // this assumes 1 vc tell if you have more
print("YES")
}

您可能还需要将其添加到

 view.addSubview(menuController.view)

不是 keyWindow

关于ios - 如何检查 subview Controller 是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54402393/

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