Getting the top most UIViewController

Senseful picture Senseful · Nov 1, 2010 · Viewed 40.4k times · Source

If I push view controllers and/or present modal view controllers on a UINavigationController, how can I find out what is the top most UIViewController? Or in my case, I want to know if a certain UITableViewController is the top most or not.

I tried using:

self.navigationController.topViewController == self

... but this doesn't work. I'm guessing that it's failing because I'm presenting modal view controllers on top of it and that the topViewController only keeps track of which views were pushed on the UINavigationController (as opposed to those that were presented modally).

Answer

Adam Ernst picture Adam Ernst · Nov 1, 2010

You want visibleViewController:

The currently visible view can belong either to the view controller at the top of the navigation stack or to a view controller that was presented modally.