如果我非常注意打印行,toVC中的所有內容都無法加載。 toVC的每個元素都是零。如果我離開印刷說明書,一切都按預期工作。爲什麼?如何打印語句刪除打破我的項目? (Swift/Xcode)
我在UITabBarControllerDelegate
的animationControllerForTransitionFrom
方法,如果這有所幫助。
我從來沒有這樣的事情發生過。只要我刪除該行,第一次觸及任何附有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)
})
}
如果將'print(「\(toVC.view.frame)」)'替換爲'_ = toVC.view',會發生什麼? – OOPer
修復它。我認爲這是一個這樣的問題,但我從來沒有必須這樣做,過渡之前。爲什麼我必須在這裏? – Sethmr
你可以嘗試'toVC.loadView()'。我並不擅長視圖控制器如何在轉換時進行管理,但在某些情況下,iOS在「loadView()」完成之前向我們傳遞了View Controller。第一次訪問'view'屬性隱式調用'loadView()',並觸發'viewDidLoad()',通常VC被設置。所以,當我發現類似於你的問題時,我嘗試'_ = vc.view'或'vc.loadView()'。 – OOPer