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

问题描述 投票:0回答:1
  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  
     }
    }

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

因为它是在各种视图控制器中重复的相同代码。我试图将其作为单个函数example()写入结构或类文件中,然后在其他viewcontroller中调用它。

旧方法遵循UIViewController扩展文件。有什么最佳方法可以实现吗?

ios swift uiviewcontroller generic-programming generic-type-argument
1个回答
0
投票
您应该扩展UIViewController类。您可以从所有ViewController调用此示例方法。

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 }

或者如Vipin所说,您可以创建一个自定义类。 

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

然后,您可以像这样使用ViewController:

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

© www.soinside.com 2019 - 2024. All rights reserved.