我需要一个加载屏幕来显示从服务器上下载的一些数据。我提出了一个没有动画的模态渐变视图控制器。但我不知道如何解除加载屏幕视图控制器,因为dismissViewController
函数只能从内部调用。iOS应用程序的加载屏幕
我应该能够拒绝来自另一视图控制器加载屏幕视图控制器。有什么建议么?
我需要一个加载屏幕来显示从服务器上下载的一些数据。我提出了一个没有动画的模态渐变视图控制器。但我不知道如何解除加载屏幕视图控制器,因为dismissViewController
函数只能从内部调用。iOS应用程序的加载屏幕
我应该能够拒绝来自另一视图控制器加载屏幕视图控制器。有什么建议么?
一种选择是使用NSNotificationCenter
。您可以发布自定义通知,并在加载视图中将其关闭。
如果您收到在父视图中的数据,那么你可以关闭也从父视图加载视图。您可以从父视图中拨打dismissViewController
,使用UIViewController
类的presentingViewController属性。
在你的情况从parentView您可以使用驳回子视图:
[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
presentingViewController
所呈现这个视图控制器视图控制器。 (只读) 宣言
夫特
var presentingViewController: UIViewController? { get }
目标C
@property(nonatomic, readonly) UIViewController *presentingViewController
讨论
当呈现视图控制器模态(显式或隐式地 )使用所述presentViewController:动画:完成: 方法,即提出视图控制器具有将该属性设置 到它呈现视图控制器。如果视图控制器是 不是以模态方式呈现的,但它的祖先之一是,此属性 包含呈现祖先的视图控制器。如果 当前视图控制器或其任何祖先都以模态方式呈现 ,则此属性中的值为零。 Import Statement
import UIKit Availability
适用于iOS 5.0及更高版本。
你需要表现出另一个VC?您可以只显示一个子视图,当您启动应用程序时使其可见= true,并根据请求成功或失败回调再次隐藏它(取决于您使用的网络框架)
我不知道你开始请求并知道何时完成,如果加载屏幕知道下载何时完成,则可以执行以下两项操作之一,或者将第一个VC作为代理(定义协议)传递给第二个VC(加载屏幕),并且当您知道加载屏幕上的下载完成时,您可以调用代理上的方法来取消加载屏幕,或者您可以使用NSNotificationCenter,在第一个VC上注册某些事件当进程在加载屏幕上完成时,通知第一个VC用这种方法来解除加载屏幕。
如果启动第一个VC的过程中,你知道什么时候也结束第一个VC我不明白你的问题,因为你只是解雇加载屏幕,它会工作。 你能提供更多信息吗?如果您希望我可以发布一些代码,以帮助您采用这种方法之一。
我建议在这种情况下使用NSNotification,但你应该能够从另一个视图控制器关闭视图控制器。 – 2014-12-18 22:57:58
这是一个常用的工具:https://github.com/jdg/MBProgressHUD – 2014-12-18 23:20:13