Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Swift IOS在不同的ViewController中使用相同的功能_Ios_Swift_Uiviewcontroller_Generic Programming_Generic Type Argument - Fatal编程技术网

使用Swift IOS在不同的ViewController中使用相同的功能

使用Swift IOS在不同的ViewController中使用相同的功能,ios,swift,uiviewcontroller,generic-programming,generic-type-argument,Ios,Swift,Uiviewcontroller,Generic Programming,Generic Type Argument,在上面的代码中,我编写了一个函数,该函数作为特定视图控制器的变量值 因为在不同的viewcontroller中重复了相同的代码。 我试图将它作为一个函数写入结构或类文件中的example(),并在不同的viewcontroller中调用它 旧方法遵循UIViewController扩展文件。实现此功能的最佳方法是什么?您应该扩展UIViewController类。 您可以从所有ViewController调用此示例方法 class FirstViewController : UiViewCo

在上面的代码中,我编写了一个函数,该函数作为特定视图控制器的变量值

因为在不同的viewcontroller中重复了相同的代码。 我试图将它作为一个函数写入结构或类文件中的
example()
,并在不同的viewcontroller中调用它


旧方法遵循UIViewController扩展文件。实现此功能的最佳方法是什么?

您应该扩展UIViewController类。 您可以从所有ViewController调用此示例方法

  class FirstViewController : UiViewController {
      example("First Value","Second Value")

      func example(_ firstParameter: String, _ secondParameter: String) {
         var one = self.ValueOne[0].first
         var two = self.ValueTwo[0].second
         var three = ShareClass.Variable.value
         var four = keychain.get('name')
         var five = self.variableNameFive
         var six = firstParameter 
         var seven = secondParameter  
      }
    }
  class SecondViewController : UiViewController {
    example("Random String","Random Value String")

    func example(_ firstParameter: String, _ secondParameter: String) {
       var one = self.ValueOne[0].first
       var two = self.ValueTwo[0].second
       var three = ShareClass.Variable.value
       var four = keychain.get('name')
       var five = self.variableNameFive
       var six = firstParameter 
       var seven = secondParameter  
     }
    }
 class ThirdViewController : UiViewController {
    example("Dynamic String","Dynamic Value Type")

    func example(_ firstParameter: String, _ secondParameter: String) {
       var one = self.ValueOne[0].first
       var two = self.ValueTwo[0].second
       var three = ShareClass.Variable.value
       var four = keychain.get('name')
       var five = self.variableNameFive
       var six = firstParameter 
       var seven = secondParameter  
     }
    }
class FourthViewController : UiViewController {
    example("Complicated String","Complicated String Variable")

    func example(_ firstParameter: String, _ secondParameter: String) {
       var one = self.ValueOne[0].first
       var two = self.ValueTwo[0].second
       var three = ShareClass.Variable.value
       var four = keychain.get('name')
       var five = self.variableNameFive
       var six = firstParameter 
       var seven = secondParameter  
     }
    }
或者正如Vipin所说,您可以创建一个自定义类

extension UIViewController {
func example(_ firstParameter: String, _ secondParameter: String) {
    var one = self.ValueOne[0].first
    var two = self.ValueTwo[0].second
    var three = ShareClass.Variable.value
    var four = keychain.get('name')
    var five = self.variableNameFive
    var six = firstParameter
    var seven = secondParameter
}
之后,您可以像这样使用ViewController:

class CustomClass: UIViewController {
    func example(_ firstParameter: String, _ secondParameter: String) {
        var one = self.ValueOne[0].first
        var two = self.ValueTwo[0].second
        var three = ShareClass.Variable.value
        var four = keychain.get('name')
        var five = self.variableNameFive
        var six = firstParameter
        var seven = secondParameter
    }   
}

您可以创建一个基类,然后间歇到所有类,这样您就可以轻松地使用并只在一个类中编写代码,这意味着基类
class CustomViewController: CustomClass {
   //If you want to add VC specific actions to this method, you can override it
    override func example(_ firstParameter: String, _ secondParameter: String) {
        super.example(firstParameter, secondParameter)
        print("something more just for this VC")
    }
    override func viewDidLoad() {
        super.viewDidLoad()
        example("First Param", "Second param")
    }
}