Calling UIViewController method from app delegate
- Notification. But you don't want this.
- You can get the reference to your that
viewController
in theAppDelegate
. Than call that(void)goToBeginning
method in the(void)applicationDidEnterBackground
For example: In your ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.myViewController = self;
}
And in your AppDelegate
:
@class MyViewController;
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (weak, nonatomic) MyViewController *myViewController;
@end
And in the AppDelegate
's implementation:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
[self.myViewController goToBeginning];
}
Related videos on Youtube
Sarp Kaya
Updated on July 05, 2022Comments
-
Sarp Kaya almost 2 years
I know there are duplicates of this question but my situation is different here.
When user goes back to the home
(void)applicationDidEnterBackground
gets invoked from theAppDelegate
class. However once user presses home button, I don't want user to see this view controller again, so I have a method named(void)goToBeginning
that switches to another view controller. I want to be able to call this method from AppDelegate. I don't really want to useNotificationCenter
for this. Also the picked solution here: Calling view controller method from app delegate does not work for me as it initialises new object whereas I want to be able to call an object that is already in the view. How can I do that? I am using iOS 7 and XCode 5. -
Sarp Kaya over 10 yearsThanks, it does work fine
-
sunkehappy about 9 years@Bryan Not me, the OP don't want this. "I don't really want to use
NotificationCenter
". You should read the question carefully. ^_^ -
Bryan about 9 yearsAh, sorry. Will delete my comment.
-
serge-k about 8 yearsGreat answer +1. You will get a warning from compiler with just AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; Should change to AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; See stackoverflow.com/questions/5082738/…
-
Boris Gafurov about 7 yearsnice workaround, though judging by the titles I do not get why is it marked as a duplicate - the other one's title is just the opposite