gpt4 book ai didi

swift - 打印语句删除如何破坏我的项目? ( swift/Xcode)

转载 作者:搜寻专家 更新时间:2023-10-31 21:46:46 26 4
gpt4 key购买 nike

如果我注释掉打印行,toVC 中的所有内容都无法加载。 toVC 的每个元素都是零。如果我留下打印语句,一切都会按预期进行。为什么?

如果有帮助的话,我在 UITabBarControllerDelegateanimationControllerForTransitionFrom 方法中。

我以前从来没有遇到过这样的事情。一旦我删除该行,它就会在我第一次触摸任何附加有 IBOutlet 的元素时中断。任何帮助将不胜感激。

func animateToProfile(using transitionContext: UIViewControllerContextTransitioning) {
guard let fromVC = transitionContext.viewController(forKey: .from)?.childViewControllers.first,
let toVC = transitionContext.viewController(forKey: .to)?.childViewControllers.first as? ProfileViewController,
let superviewToAdd = toVC.parent?.view else { return }

print("\(toVC.view.frame)")

let sideMenuOriginX = UIScreen.main.bounds.width * (98 / 414)

toVC.sideMenuView.frame.origin.x = toVC.view.frame.width
toVC.visualEffectView.alpha = 0

transitionContext.containerView.addSubview(superviewToAdd)

let duration = transitionDuration(using: transitionContext)

UIView.animate(withDuration: duration, delay: 0, options: [.curveEaseInOut], animations: {
toVC.sideMenuView.frame.origin.x = sideMenuOriginX
toVC.visualEffectView.alpha = 1
}, completion: { _ in
transitionContext.completeTransition(!transitionContext.transitionWasCancelled)
})
}

最佳答案

啊。 UIViewController 中的 View 是延迟加载的,通常由 SDK 在生命周期的相关部分加载。这就是为什么您要在加载 View 时在 viewDidLoad 中设置代码。

因为当您在导致它加载的打印语句中调用 toVC.view 时它是延迟加载的。

我怀疑这行 toVC.sideMenuView.frame.origin.x = toVC.view.frame.width 可能是个问题。当您设置 View 的某些属性时,该属性随后将被覆盖。

要尝试调试它,请尝试进入该行。或者,您可以将 print 语句替换为简单的 _ = toVC.view 以强制加载 View 。或者,在代码中的不同位置添加一些 print(toVC.isViewLoaded) 的调试语句,以查看是否真正加载了 View 。

关于swift - 打印语句删除如何破坏我的项目? ( swift/Xcode),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45570558/

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