UIApplication.shared.keyWindow?查看全局行动方法

时间:2017-10-17 13:19:24

标签: ios swift uiapplication

我添加了一个button,我想看到我ViewControllers的所有内容

UIApplication.shared.keyWindow?.addSubview(mybutton)

我想弄清楚的是,我如何制作一个button可以调用的全局函数,无论哪个是我当前的ViewController

2 个答案:

答案 0 :(得分:0)

在您创建按钮的位置添加:

mybutton.addTarget(self, action: #selector(buttonPressed), for: .touchUpInside)
UIApplication.shared.keyWindow?.addSubview(mybutton)

然后在同一个类中添加一个方法,以便在按下按钮时进行处理:

func buttonPressed() {
    // Button handling code here e.g:
    // StaticButtonHandler.handleButtonPress()
    // or 
    // ButtonHandler.sharedInstance.handleButtonPress()
}

如果您需要从任何地方调用全局代码并且它不需要状态,那么将它放在某个静态方法中是最简单的:

class StaticButtonHandler {        
    static func handleButtonPress() {
        // Handle the button press
    }
}

或者使用单例模式:

class ButtonHandler {
    static let sharedInstance = ButtonHandler()

    func handleButtonPress() {
        // Handle the button press
    }
}

答案 1 :(得分:0)

您可以在代码中声明一个包含“全局”操作方法的类:

class GlobalActionHandler {
    @objc static func buttonClicked() {
        print("Button click handler")
    }
}

然后在您的按钮上添加目标和操作,如下所示:

button.addTarget(GlobalActionHandler.self, 
                 action: #selector(GlobalActionHandler.buttonClicked), 
                 for: .touchUpInside)

如果您愿意,还可以将GlobalActionHandler设为单身,buttonClicked()为实例方法。