2015-05-24 49 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

相关问题