UIApplication.shared.keyWindow?'观全球行动方法
问题描述:
我添加了一个button
,这是我希望看到的顶部都是我ViewControllers
与UIApplication.shared.keyWindow?'观全球行动方法
UIApplication.shared.keyWindow?.addSubview(mybutton)
我试图搞清楚的是我怎样才能使一个全球性的功能,这button
可以打电话,不管哪一个是我目前的ViewController
?
答
当您创建按钮添加:
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
}
}
答
你可以在你的代码声明一个类,将举办“全球性”的操作方法:
class GlobalActionHandler {
@objc static func buttonClicked() {
print("Button click handler")
}
}
然后,目标和行动添加到您的按钮,这样:
button.addTarget(GlobalActionHandler.self,
action: #selector(GlobalActionHandler.buttonClicked),
for: .touchUpInside)
你也可以将GlobalActionHandler
独立的,并buttonClicked()
一个实例方法,如果你喜欢。
谢谢,但那不是我需要的。请阅读这个问题。我知道我可以做到这一点,但它会适用于我所在的当前ViewController。再次,我想要的是一个可以从任何地方调用的全局函数。 – radioaktiv
为我的答案添加了静态方法和单例模式,以允许从您的按钮处理程序或其他任何地方调用全局代码,这有助于吗? –