如何在UIViewcontroller扩展中创建通用函数?

时间:2018-09-15 11:24:43

标签: ios swift swift4

我需要对所有UIViewcontroller运行通用功能,而无需手动指定“ self.function()”

3 个答案:

答案 0 :(得分:1)

我认为无法在swift4中刷新viewDidload(),尽管可以通过刷新来更早地实现,而可以通过继承来实现

Class BaseVC: UIViewController {
    func viewDidLoad() {
    super.viewDidLoad() 
  /// customization here … e.g self.function() 
    }
}

Class CustomVC: BaseVC {
 func viewDidLoad() {
    super.viewDidLoad() 
     // you had called self.function no need to do it again 
    }
}

答案 1 :(得分:-1)

只需使用扩展名将自定义方法添加到UIViewController:

extension UIViewController {

   func customFunc() {
      print("Custom func is called")
   }
}

现在,在从UIViewController继承的每个类中,您都可以轻松访问此函数:

class MainVC: UIViewController {

   override func viewDidLoad() {
    super.viewDidLoad()

   //call your func
   customFunc()
   }

}

答案 2 :(得分:-3)

在无法修改的类(例如request.resource.data.user == resource.data.user基类)中覆盖函数的唯一方法是使用swizzling方法。

How to swizzle init in Swift

您使用此技术来使UIViewControllerviewDidLoad陷入混乱。

在大多数情况下,您应该只是根据需要viewDidAppear子类化,并在生命周期方法重写中调用函数。