2016-03-29 24 views
0

benim kodu yeniden çalışıyorum, ben aynı göbek ilerlemeyi bu şekilde kullanmak 30 dosyaları var:Diğer sınıfın kendi kendine parametresi nasıl olur?

:

Sonra yok
override func viewDidLoad() { 
    let hub = MBProgressHUD.showHUDAddedTo(self.view, animated: true) 
    hub.mode = MBProgressHUDMode.Indeterminate 
    self.view.addSubview(hub) // starts loader 
    // some code 
    MBProgressHUD.hideHUDForView(self.view, animated: true) // stop loader 
} 

ben gibi hızlı dosya jenerik util birinde bunu nasıl biliyor

class Loader{ 

    func start(){ 
     // the start code 
    } 

    func stop(){ 
     // the stop code 
    } 

} 

yapmak için sadece

var load = Loader() 
load.start() 
// some code 
load.stop() 

benim sorun diğerinden fiili sınıfın kendini acess olduğunu tahmin i bunu nasıl?

+1

, bu işlevselliği ile UIViewController sınıfı genişletmeyi düşünüyoruz. –

cevap

1

Görünümü, ekleyeceğiniz görünüme erişebilmeniz için Loader sınıfına geçirebilirsiniz.

class Loader{ 

    func start(view: UIView){ 
     let hub = MBProgressHUD.showHUDAddedTo(view, animated: true) 
     hub.mode = MBProgressHUDMode.Indeterminate 
     view.addSubview(hub) // starts loader 
    } 

    func stop(view: UIView){ 
     MBProgressHUD.hideHUDForView(view, animated: true) // stop loader 
    } 

} 

.... 
var load = Loader() 
load.start(self.view) 
// some code 
load.stop(self.view) 
+0

Awesome sadece buydu, teşekkürler! –

1

Bu durumda, en iyi yaklaşımdır. Onun çok basit ve tekrar her viewcontroller içinde yükleyici sınıfı ayırmaya gerek yok. Sadece bu kodu sınıfınızın herhangi bir kapsamı dışında bırakın ve herhangi bir karmaşıklık ile kullanın. Bu gibi ViewController gelen

extension UIViewController{ 
    func start(){ 
    MBProgressHUD.showHUDAddedTo(self.view, animated: true) 
    } 

    func stop(){ 
    MBProgressHUD.showHUDAddedTo(self.view, animated: true) 
    } 
} 

Çağrı: her zaman bir viewController bu kullanırsanız

self.start() 

..... 

self.stop() 
+0

Yine de, Chris'in daha iyi yaklaşmasını istiyorum, çünkü Tek Sorumluluk İlkesi'ni takip ettiğinden, fikriniz iyi olsa da - 2 hafta sonra ne 'start()' ın tetikleyeceğini bilemem. – vikingosegundo

+0

Bunu yapmak için iyi bir yol ama bir sorum var, eğer bir dosyada uzantı yaparsam, diğer tüm dosyalar bu uzantıyı alacak mı? –

İlgili konular