2011-08-19 3 views
0

현재 애플리케이션에서 가장 많이 사용되는 컨트롤러 유형을 찾아야합니다.컨트롤러 유형 결정 - MonoTouch

UIApplication.SharedApplication.KeyWindow.Subviews.Last().GetType() 

은 UIView를 반환합니다. 나는 AddSubview() 메서드를 사용할 때 Controller가 아니라 View를 전달한다는 것을 알고 있습니다. Objective-C에는 IsKindOfClass 메서드가 있지만 실제로 시도하는 것은 사용자가 홈 버튼을 누르면 무비 플레이어 컨트롤러가 맨 위에 있으면이를 닫으려고합니다. 내가 그것을 할 수있는 유일한 장소는 내가 아는 바로는 앱의 위임자 인 OnResignActivation() 메소드입니다.

는 "맨"에 의해 사전에

건배 ...

답변

1

당신이 무엇을 의미합니까 감사합니다? 모달로 표시된 컨트롤러에 대해 말하면 컨트롤러를 표시하고 있기 때문에 위에 무엇이 있는지 정말로 알아야합니다. :-)

그래서 현재 제시하고있는 컨트롤러에 대한 참조를 유지할 수 있습니다 (예 : AppDelegate). 그러면 당신이 보여주고있는 것을 알게 될 것입니다.

프리 뷰 컨트롤러 ModalViewController 속성을 확인할 수도 있습니다. 현재 모달로 제공되는 컨트롤러에 대한 참조를 갖습니다 (없는 경우 NULL입니다). if(oMyController.ModalViewController is MPMoviePlayerController) { /* do something, like dismissal */}을 확인할 수 있습니다.

그러나 모달로 표시된 컨트롤러를 닫으려면 그 컨트롤러가 무엇인지 알 필요조차 없습니다. 제시하는 컨트롤러의 DismissModalViewControllerAnimated(bool) 메서드를 호출하면 모달로 표시된 것이 사라집니다.

+0

답변 해 주셔서 감사합니다. 그러나 저는 앱 델리게이트에 영화 플레이어를 모달로 표시 할 수있는 컨트롤러를 모두 알려주고 현재 어떤 플레이어가 표시되는지, 그리고 동영상 플레이어를 제공했는지 여부를 확인하고 싶지 않았습니다. 나는 그것을 더 우아한 방식으로 시도했다. 그러나 확실히, 아주 좋은 대답입니다. –