Та же функция в другом ViewController с использованием Swift IOS

  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  
     }
    }

В приведенном выше коде я написал функцию, которая в качестве значения переменной из этого конкретного контроллера представления.

Так как это один и тот же код повторяется в различных viewcontroller. Я пытаюсь написать его в качестве единственной функции example() в структуре или файле класса и вызвать его в другом viewcontroller.

Старые методы следуют за файлом расширения UIViewController. Есть ли лучший способ реализовать это?

Всего 1 ответ


Вы должны расширить свой класс UIViewController. Вы можете вызвать этот пример метода из всех ваших ViewControllers.

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
}

Или, как сказал Випин, вы можете создать собственный класс.

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
    }   
}

И после этого вы можете использовать ваши ViewControllers следующим образом:

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")
    }
}