2011-08-19 26 views
0

我需要找出當前最重要的控制器類型。確定控制器的類型 - MonoTouch

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

返回UIView。我知道,當您使用AddSubview()方法時,您傳遞View,而不是Controller。 Objective-C有IsKindOfClass方法,但我真正嘗試做的是當用戶按下home按鈕時,如果movieplayer控制器位於頂部,我想解僱它。就我所知,我唯一能做的就是在應用代理中使用OnResignActivation()方法。

謝謝你在前進,

乾杯......

回答

1

你是什麼意思的 「層次最高的」?如果你正在談論模態顯示的控制器,你應該知道最重要的是因爲你正在展示控制器。 :-)

因此,您可以保留對當前正在呈現的控制器的引用(例如在AppDelegate中)。你會知道你在展示什麼。

您還可以檢查呈現視圖控制器ModalViewController屬性。它將引用當前以模態方式呈現的控制器(如果沒有,則爲NULL)。 然後您可以檢查if(oMyController.ModalViewController is MPMoviePlayerController) { /* do something, like dismissal */}

但是要解僱模態控制器,您甚至不必知道它是什麼。只需調用呈現控制器的DismissModalViewControllerAnimated(bool)方法,任何模態顯示的內容都將消失。

+0

非常感謝您的回答。但是,我不想保留所有可以在應用程序委託中以模態方式呈現電影播放器​​的控制器的引用,並檢查哪一個控制器當前可見,以及它是否提供了電影播放器​​。我試圖用更優雅的方式來做到這一點。但絕對是一個非常好的答覆。 –