2017-10-17 12 views
-1

난의 상단을보고 싶은 button을 추가 한 내 모든 ViewControllersUIApplication.shared.keyWindow? ' 의 글로벌 액션이 방법

UIApplication.shared.keyWindow?.addSubview(mybutton)

은 내가이 그 전역 함수를 만들 수있는 방법입니다 알아 내려고 노력하고 무엇에 button은 내 현재 ViewController과 상관없이 전화를 걸 수 있습니까?

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

당신이 호출 할 글로벌 코드를해야하는 경우 :

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

그런 다음 같은 클래스에 버튼을 누를 때마다 처리하는 방법을 추가 : 당신이 당신의 버튼 추가를 만들

답변

0

어느 곳에서나 정적 인 방법으로 넣는 것이 가장 쉬운 상태는 필요하지 않습니다.

class StaticButtonHandler {   
    static func handleButtonPress() { 
     // Handle the button press 
    } 
} 
class GlobalActionHandler { 
    @objc static func buttonClicked() { 
     print("Button click handler") 
    } 
} 

는 다음과 같이 귀하의 버튼에 타겟과 액션을 추가 : 당신은 "글로벌"액션 메소드를 개최하는 코드에서 클래스를 선언 할 수

class ButtonHandler { 
    static let sharedInstance = ButtonHandler() 

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

감사합니다.하지만 필요한 것은 아닙니다. 질문을 읽어보십시오. 나는 내가 할 수 있다는 것을 알고 있지만 현재 사용중인 ViewController에서 작동 할 것입니다. 다시 원하는 것은 어디서나 호출 할 수있는 전역 함수입니다. – radioaktiv

+0

정적 메서드와 싱글 톤 패턴을 내 응답에 추가하여 단추 처리기 또는 다른 곳에서 전역 코드를 호출 할 수 있도록 도와줍니다. –

0

:는 또한 싱글 톤 패턴을 사용 : 당신이 원하는 경우

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

또한 GlobalActionHandler 싱글 및 buttonClicked() 인스턴스 메서드를 만들 수 있습니다.