2017-10-17 115 views
-1

我添加了一个button,这是我希望看到的顶部都是我ViewControllersUIApplication.shared.keyWindow?'观全球行动方法

UIApplication.shared.keyWindow?.addSubview(mybutton)

我试图搞清楚的是我怎样才能使一个全球性的功能,这button可以打电话,不管哪一个是我目前的ViewController

回答

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

或者使用Singleton模式:

class ButtonHandler { 
    static let sharedInstance = ButtonHandler() 

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

谢谢,但那不是我需要的。请阅读这个问题。我知道我可以做到这一点,但它会适用于我所在的当前ViewController。再次,我想要的是一个可以从任何地方调用的全局函数。 – radioaktiv

+0

为我的答案添加了静态方法和单例模式,以允许从您的按钮处理程序或其他任何地方调用全局代码,这有助于吗? –

0

你可以在你的代码声明一个类,将举办“全球性”的操作方法:

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

然后,目标和行动添加到您的按钮,这样:

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

你也可以将GlobalActionHandler独立的,并buttonClicked()一个实例方法,如果你喜欢。