在其他UIViewController中预先初始化自定义UIViewController



我编写了一个自定义的UIViewController来显示向上滑动菜单。每次调用present(thisViewController)时,都会显示带有动画的菜单,背景是alpha 0.5的黑色透明。

但我遇到的问题是,每次viewController出现时,动画都没有完全运行,背景颜色似乎不透明,幻灯片菜单没有显示整个菜单,屏幕外只有一行。

我在网上搜索了一下,发现原因是动画没有完成,因为viewController只是草签,动画显示得太快了。如果我驳回并提交再次显示出我所期望的。

所以我想有一个方法来预先初始化幻灯片菜单ViewController,以便它可以在我展示之前运行viewDidLoad。有办法做到这一点吗?


更新:

我在viewWillAppear()中调用UIView.animate()。我认为它第一次运行viewWillAppear((的时间太短,它刚刚初始化UIView并立即设置动画,所以它在动画操作中中断了。当第二次呈现此viewController时,它完全显示了动画,因为它以前已经显示过了。

我在viewDidLoad()中添加了视图,但在呈现viewController之前不会调用它。

嗯。。我想有一个方法,让向上滑动菜单viewController在另一个viewController中预先做viewDidLoad()

@Shadowrun谢谢。

在UIViewController中,我初始化SlideMenu ViewController,并使SlideMenu在viewDidLoad((中调用ViewController.loadViewIfNeedd((

class viewController: UIViewController {
var slideUpMenu = SlideMenuViewController()
override func viewDidLoad() {
super.viewDidLoad()
slideUpMenu.loadViewIfNeeded()
}
func pressButton() {
present(slideUpMenu, animated: false)
}
}

它表现得很完美。

最新更新