Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.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
Ios 如何在一个类或.swift文件中编写一个方法,并在整个代码中调用该方法?_Ios_Swift - Fatal编程技术网

Ios 如何在一个类或.swift文件中编写一个方法,并在整个代码中调用该方法?

Ios 如何在一个类或.swift文件中编写一个方法,并在整个代码中调用该方法?,ios,swift,Ios,Swift,我正在使用swift。我有10个视图控制器屏幕以及10个视图控制器.swift类。在每个屏幕上,我都通过我的应用程序检查互联网连接。所以我有一个问题 我有一个方法可以说: func somemethodchecking () { } 我把这个方法写成internetchecking.swift。现在,在我的所有其他视图控制器的viewDidLoad下,我需要调用somemethodchecking()方法。但是我该怎么做呢?我需要导入任何程序吗 有很多方法可以做到这一点 创建基类(从UIVi

我正在使用
swift
。我有10个视图控制器屏幕以及10个视图控制器.swift类。在每个屏幕上,我都通过我的应用程序检查互联网连接。所以我有一个问题

我有一个方法可以说:

func somemethodchecking () {

}

我把这个方法写成
internetchecking.swift
。现在,在我的所有其他视图控制器的
viewDidLoad
下,我需要调用
somemethodchecking()
方法。但是我该怎么做呢?我需要导入任何程序吗

有很多方法可以做到这一点

  • 创建基类(从UIViewController类继承)并在viewDidLoad中调用您的方法-每当子类的“viewDidLoad”调用时自动调用,父类“viewDidLoad”也会调用,因此“somemethodchecking”

  • 创建类级方法,并随时在viewDidLoad中调用它

  • 通知-使用NSNotification类并通过发送消息“viewDidLoad”将通知发送到internetchecking类。这样你就可以触发“somemethodchecking”


  • 我会这样做:

    class InternetUtils {
        class func isConnectionOk() -> Bool {
             //your code
        }
    }
    
    然后,在你的其他课程中,你可以做:

    if InternetUtils.isConnectionOk() {
       //do online stuff
    }
    

    解决这个问题的第一种方法是

    围绕networking类编写扩展,如下所示,并在所有viewdidLoad中调用该方法

    public extension Your_Networking_Class {
    class func somemethodchecking()
    {
        //your code
     }
    }
                          OR
    
    class  Networking_Extension
    {
      class func somemethodchecking()
     {
        //your code
      }
     }
    
    您可以在viewDidLoad中作为调用这些方法

    我希望您所需要的只是在进行网络呼叫之前检查互联网是否可用,并向用户显示一些错误消息,更好的方法是使用广播通知,通过使用可访问性类,您可以注册一个名为“kReachabilityChangedNotification”的通知并处理它,而不是编写自己的代码,因为apple all ready为您提供了这么好的类,您可以参考以下文档了解更多详细信息


    谢谢你的解决方案。你能给我一些代码解释一下吗,我是ios devI新手,我做了你的第一个选择。比如说,我创建了一个从uiviewcontroller继承的类。在视图下的视图控制器中,我已经加载了我的代码。但是……。我如何才能将该视图控制器或方法名称调用到视图下的所有其他视图控制器???我能理解一点,但我很困惑我怎么能调用所有视图控制器屏幕???。请确保您继承了父类,并且在子类中您在“viewDidLoad”中调用了[super viewDidLoad]我想问的是,我怎样才能将该方法调用到viewdidload下的所有视图控制器……因为在一个屏幕中,我已经在viewdidload下完成了编码。那么,我怎样才能将该方法调用到viewdidload下的所有视图控制器请检查此使用xcode 7.2这不是一个非常聪明的设计-你应该将这些东西放在一个模型类中并从ViewController调用相同的模型。另外,不要在
    viewdiload
    中执行可能耗时的任务。使用扩展-以防您正在寻找一个临时解决方案:有一个开发将Apple的可达性类与GCD结合起来:对您的帖子进行了一些文本更正。没什么大不了的,但请记住,提出一个好的、明确的问题是获得最佳帮助的最佳方式。祝你好运。在Swift中编写实用程序包装器的更好方法是使用无大小写枚举,即
    enum InternetUtils{…}
    静态方法。这样,您就不会意外地创建它的实例,也不会得到继承,只会得到一个名称空间。
    
    Your_Networking_Class.somemethodchecking()
    Networking_Extension.somemethodchecking()