我有一个只包含imageview的viewController。我希望在应用程序中加载时(如从Web服务中获取数据)显示它。因此,我在loaderViewController中创建了一个函数
func showLoading(viewController:UIViewController) {
viewController.presentViewController(LoadingViewController(), animated: false, completion: nil)
}
当我在需要的时候调用这个函数时,这是按预期工作的,如下所示
var loader = LoadingViewController()
loader.showLoading(self)
它向我展示了带有图像的viewController。
但现在想消除这个viewController时,需要但我不能这样做,这是我已经尝试到目前为止,我创建了另一个函数在我的LoaderViewController作为
func dismissLoader() {
let load = LoadingViewController()
load.dismissViewControllerAnimated(true) {
print("Dismissing Loader view Controller")
}
}
但是它不工作,viewController没有从屏幕上消失。
请指引我
6条答案
按热度按时间vngu2lb81#
您不必创建加载器的新示例并在其上调用
dismissViewControllerAnimated(_:Bool)
。打电话
在您的viewController上
因此,您的函数将是
6vl6ewon2#
在Swift 3中,您可以执行以下操作。
hrysbysz3#
不要每次都使用
let load = YASLoadingViewController()
,您正在创建不同控制器。这样做一次,然后只使用load
来关闭或显示kt06eoxx4#
3zwjbxry5#
你的代码有很多缺陷。你试图实现这一点的方式并不是一个好的实践。但是,如果你想快速修复,并且只想修改你现有的方法,那么就这样做吧,
当你展示一个新的
LoadingViewController
时,保留一个对它的引用,这样你就可以调用上面的方法。无论如何,即使没有引用,上面的代码也应该可以工作,因为如果调用的ViewController上没有可用的ViewController,iOS会将此方法委托回其层次结构的父ViewController。
vd8tlhqk6#
您必须在父视图控制器中存储
LoadingViewController
的链接: