【问题标题】:Same Function in different ViewController using Swift IOS使用 Swift IOS 在不同 ViewController 中的相同功能
【发布时间】:2020-03-26 10:13:29
【问题描述】:
  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() 并在不同的视图控制器中调用它。

旧方法遵循 UIViewController 扩展文件。有什么最好的方法来实现吗?

【问题讨论】:

    标签: ios swift uiviewcontroller generic-programming generic-type-argument


    【解决方案1】:

    你应该扩展你的 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")
        }
    }
    

    【讨论】:

    • 您可以创建一个基类,然后中断到所有类,这样您就可以轻松使用并且只在一个类中编写该代码意味着基类
    猜你喜欢
    • 1970-01-01
    • 2017-12-23
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    • 2012-09-08
    • 1970-01-01
    • 2010-10-29
    • 2015-11-27
    相关资源
    最近更新 更多