如何得到其他类的自我参数?

时间:2016-03-29 15:08:44

标签: swift

我正在尝试重用我的代码,我有30个文件使用相同的集线器进程:

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
}

然后我不知道如何在一个util swift文件中执行此操作,如:

class Loader{

    func start(){
      // the start code
    }

    func stop(){
      // the stop code
    }

}

只做

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

我想我的问题是来自其他人的实际班级的自我,我该怎么做?

2 个答案:

答案 0 :(得分:1)

您可以将视图传递到Loader类,这样您就可以访问需要添加视图的视图。

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)

答案 1 :(得分:1)

我认为在这种情况下!!是最好的方法。它非常简单,不需要再次在每个viewcontroller中分配loader类。只需将此代码放在您的任何类的范围之外,并使用任何复杂性。

extension

从您的ViewController调用,如下所示:

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

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