ios - Run Activity Indicator across Views -


i using plugin: https://github.com/icanzilb/swiftspinner/

to show acitvity indicator, easy:

swiftspinner.show("loading data") 

however, have view getting from:

performseguewithidentifier("viewc1segue", sender: self) 

when clicked on table view cell.

the problem is, when go new view, there initial blank white screen because data loaded via alamofire , takes few moments load.

is there way load activity spinner on 1 view, , let views change undeneath it, when use .hide() on new view spinner disappear?

there dilemma:

i have tried adding swift spinner onto new viewdidload. works, however, of content loaded under viewdidappear function. add function, spinner fails load.

ok, have question:

what best way not show blank view @ beginning until data loads?

if want have spinner on several views, create new loadingviewcontroller , nib it, set it's backgroundcolor transparent, show loadingviewcontroller on current context (or on full screen) , display spinner on loadingviewcontroller.

this way can show spinner on view , dismiss view. code below.

create loadingviewcontroller , delegate it:

protocol loadingviewcontrollerdelegate {     func didfinishloading(controller: loadingviewcontroller) }  class loadingviewcontroller: uiviewcontroller {     var delegate: loadingviewcontrollerdelegate? = nil      override func viewdidload() {         // spinner code here     }      // delegate function, should fired when loading done.     func finished() {         if self.delegate != nil {             self.delegate?.didfinishloading(self)         }     } } 

in first viewcontroller, display loadingviewcontroller:

let loading = loadingviewcontroller(nibname: "loadingviewcontroller", bundle: nil) loading.modaltransitionstyle = .crossdissolve loading.modalpresentationstyle = .overfullscreen presentviewcontroller(loading, animated: true, completion: nil) 

in second viewcontroller, implement method receive loadingviewcontroller:

var loading: loadingviewcontroller? = nil 

again in first viewcontroller, send data on second:

override func prepareforsegue(segue: uistoryboardsegue, sender: anyobject?) {     if segue.identifier == "viewc1segue" {         let destination = segue.destinationviewcontroller as! secondviewcontroller         destination.loading = self.loading     } } 

and in second viewcontroller, conform loadingviewcontrollerdelegate , set delegate:

class secondviewcontroller: uiviewcontroller, loadingviewcontrollerdelegate {     ...     override func viewdidload() {         loading.delegate = self     }     ...     // mark: - loadingviewcontrollerdelegate     func didfinishloading(controller: loadingviewcontroller) {         controller.dismissviewcontrolleranimated(true, completion: nil)     } } 

and in alamofire call, run following upon completion:

loading.finished() 

Comments

Popular posts from this blog

Delphi XE2 Indy10 udp client-server interchange using SendBuffer-ReceiveBuffer -

Qt ActiveX WMI QAxBase::dynamicCallHelper: ItemIndex(int): No such property in -

Enable autocomplete or intellisense in Atom editor for PHP -