我需要一個加載屏幕來顯示從服務器上下載的一些數據。我提出了一個沒有動畫的模態漸變視圖控制器。但我不知道如何解除加載屏幕視圖控制器,因爲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