Определить тип контроллера - MonoTouch - PullRequest
0 голосов
/ 19 августа 2011

Мне нужно выяснить тип контроллера, который в настоящее время является самым верхним в приложении.

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

возвращает UIView.Я знаю, что когда вы используете AddSubview() метод, вы передаете View, а не Controller.Objective-C имеет метод IsKindOfClass, но то, что я действительно пытаюсь сделать, это когда пользователь нажимает кнопку «Домой», если контроллер видеоплеера находится сверху, я хочу отклонить его.Насколько я знаю, это единственное место, где я могу сделать это - метод OnResignActivation() в делегате приложения.

Заранее спасибо,

Приветствия ...

1 Ответ

1 голос
/ 20 августа 2011

Что вы подразумеваете под «верхушкой»?Если вы говорите о модально показанных контроллерах, вы должны действительно знать, что находится сверху, потому что вы представляете контроллеры.: -)

Таким образом, вы можете сохранить ссылку на контроллер, который вы в данный момент представляете (например, в AppDelegate).Затем вы узнаете, что вы показываете.

Вы также можете проверить свойство представления контроллеров ModalViewController.Он будет иметь ссылку на контроллер, который в настоящее время представлен модально (или NULL, если его нет).Затем вы можете проверить if(oMyController.ModalViewController is MPMoviePlayerController) { /* do something, like dismissal */}.

Но чтобы отменить модально представленный контроллер, вам даже не нужно знать, что это такое.Просто вызовите метод DismissModalViewControllerAnimated(bool) текущего контроллера, и все, что было показано модально, исчезнет.

...