我正在尝试重用我的代码,我有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()
我想我的问题是来自其他人的实际班级的自我,我该怎么做?
答案 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)
}
}