2015-01-15 1 views
3

나는 여러 개의 ViewController가있는 응용 프로그램이 있으며 AppDelegate에서 현재 어떤 ViewController가 활성화되어 있는지 확인해야합니다. 예를 들어, 특정 ViewController가 활성 상태인지 확인하는 함수를 실행하는 타이머를 만들고, 그렇다면 몇 가지 작업을 수행합니다. 그것을 할 방법이 있습니까?활성화 된 NSViewController를 확인하는 방법

+0

Hey Niktin, TabBar 컨트롤러 또는 탐색 컨트롤러와 같은보기 컨트롤러를 보유 할 수있는 컨테이너 컨트롤러를로드 중입니까? – Ryan

+0

아니요, 세그들과 연결된 일부보기 컨트롤러가 있습니다 –

+0

window.view.rootViewController? (iOS 전용 일 수 있습니다.) – Okapi

답변

1

당신은 다른 곳 AppDelegate에의 루트 뷰 컨트롤러에 액세스하거나이 정보를 얻을 수 있습니다 :

let activeController = window.rootViewController 

을하지만, 그 뷰 컨트롤러에서 일부 코드를 실행하는 타이머를 사용하고자하기 때문에, 더 수 있습니다 NSNotification을 보내주십시오. "활성"보기 컨트롤러는 활성 상태임을 인식해야하므로 알림 수신기를 연결하고 연결을 끊을 수 있습니다.

+0

고맙지 만 작성한 코드가 작동하지 않습니다 (AppDelegate로 작성된 확인되지 않은 식별자 "창"사용). NSNotification이 좋음 –

+1

[UIApplication sharedApplication] .keyWindow를 호출하여 활성 창을 가져올 수 있습니다. – Ryan

1
NSApplication.sharedApplication().keyWindow 

키보드 액세스 권한이있는 현재 창을 반환합니다. 거기에서 NSWindow 객체를 인트로 스페어하여 그 객체를 판별 할 수 있습니다.

프로그래밍 방식으로 활성화 된 창에 대한 필요성이있는 경우에도 마찬가지입니다.

NSApplication.sharedApplication().windows 

현재 열려있는 응용 프로그램의 NSWindows 배열을 반환합니다.

window.makeKeyAndOrderFront(sender) 

도 최소화되는, 초점 창을 가지고 있으며 키보드 제어를위한 키 윈도우 만들 것입니다.

window.makeKeyWindow() 

창이 초점을 맞추기 만하면됩니다. 그것을 최소화하지 않을 것입니다.

관련 문제