2015-05-24 50 views
1

我通過一個故事板呈現一個新的ViewController。我不確定如何在呈現另一個ViewController的時間內顯示progressHUD。當呈現一個新的viewController時顯示progressHUD

我目前的做法

我使用SVProgressHUD,這是我做到了。當它呈現另一個ViewController時,SVProgressHUD不會立即顯示。

與方法主要問題

進度條顯示僅在視圖控制器,而不是立即的演示結束。

let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main",bundle: nil) 
    var destViewController : UIViewController! 
    switch (indexPath.row) { 
    case 0: 

     SVProgressHUD.show() // This shows the progress bar b 
     destViewController = mainStoryboard.instantiateViewControllerWithIdentifier("myViewController") as! UIViewController 
     break 

回答

1

要隱藏進度視圖,您可以使用回調' - (void)prepareForSegue:sender:'。在新的視圖控制器即將顯示之前,此方法在視圖控制器上被調用。

這裏是API參考:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/#//apple_ref/occ/instm/UIViewController/prepareForSegue:sender

+0

我試圖在回調顯示progressHUD,但它是隻顯示progressHUD的視圖 - 控制已經呈現後。我希望它立即顯示。 – Wraithseeker

+0

我很抱歉,我的意思是你應該使用'prepareForSegue:sender:'回調來隱藏進度視圖,而不是顯示它。你應該顯示進度視圖,只要你的業務邏輯需要它 - 例如當你知道當前控制器不再有效時,只顯示進度視圖並將其隱藏在'prepareForSegue:sender:' – indrajit

+0

仍然存在同樣的問題,進度欄只顯示在視圖控制器的演示文稿的結尾,而不是開頭 – Wraithseeker

1

你可以做到這一點編程方式使用

self.presentViewController(destViewController, animated: true) {() -> Void in 
    // After presentation finishes. 
    SVProgressHUD.dismiss() // dismiss HUD. 
} 
+0

在庫ENSideMenu中,它使用的是 self.setViewControllers([contentViewController],animated:true),所以我無法使用該函數。有沒有解決辦法? – Wraithseeker

+0

你可以嘗試使用UINavigationControllerDelegate的回調方法 - navigationController:didShowViewController:animated:,一定要設置self.navigationController?.delegate = self – tounaobun

相關問題