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

Posted

技术标签:

【中文标题】使用 Swift IOS 在不同 ViewController 中的相同功能【英文标题】:Same Function in different ViewController using Swift IOS 【发布时间】: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 扩展文件。有什么最好的方法来实现吗?

【问题讨论】:

【参考方案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")
    

【讨论】:

您可以创建一个基类,然后中断到所有类,这样您就可以轻松使用并且只在一个类中编写该代码意味着基类

以上是关于使用 Swift IOS 在不同 ViewController 中的相同功能的主要内容,如果未能解决你的问题,请参考以下文章

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

在一个视图控制器中使用不同的按钮上传多个图像(iOS、Xcode 9、Swift 4)

如何在 iOS Swift 中将不同的角半径应用于 UIView 的不同角?

保存 api Facebook 数据以在不同的 ViewController swift iOS 中使用

如何使用swift在iOS中为活动设置两种不同大小的背景图像作为横向和纵向模式

我可以在 xcode 的不同文件夹中使用相同的文件名以及如何在 ios Swift 语言中访问它