How do I check if an UIViewController
is currently being displayed?
My UIViewControllers
are listening for NSNotifications
- e
Specify title to each ViewController and then get the title of current ViewController by the code given bellow.
NSString *currentController = self.navigationController.visibleViewController.title;
Then check it by your title like this
if([currentController isEqualToString:@"myViewControllerTitle"]){
//write your code according to View controller.
}
Why don't you remove the notification listener in viewWillDisappear and add it in viewWillAppear?
Edit: misread his question, sorry.
Suggested answer: set your own flag (BOOL) in viewDidDisappear and viewDidAppear.
You can use flags in viewWillAppear
and viewWillDisappear
methods for this.
I think that checking of viewController.view.superview
should works.
You need to check if your viewcontroller is on top of the stack of navigationcontroller's viewcontroller array. A sample code is,
if (self.navigationController.topViewController == self) {
//the view is currently displayed
}
You can use this inside the viewWillAppear
method to check whether the current view is visible.
It's too late to replay on this question.
To check the instance of a UIViewController
is currently on the top of the screen or to check if it is showing on screen, you can put a check like:
// Get the topmost view showing on the screen as below
UIViewController * currentVC = ((UINavigationController*)app.window.rootViewController).visibleViewController;
// Now check whether the viewcontroller you want to show is the same as the currently showing view controller.
if (currentVC.class == myVC.class) { // Here myVC is any/new instance of the viewcontroller you would like to check or show (if not shown).
// If both are same then it returns true and executes this block of code.
}