我知道这个问题有重复,但我的情况有所不同。
当用户返回主页时(void)applicationDidEnterBackground
从AppDelegate
类调用。但是,一旦用户按下主页按钮,我不希望用户再次看到此视图控制器,因此我有一个名为(void)goToBeginning
的方法切换到另一个视图控制器。我希望能够从AppDelegate调用此方法。我真的不想使用NotificationCenter
。这里选择的解决方案:
Calling view controller method from app delegate
对我来说不起作用,因为它初始化新对象,而我希望能够调用已在视图中的对象。我怎样才能做到这一点?我使用的是iOS 7和XCode 5.
答案 0 :(得分:42)
viewController
中获得对AppDelegate
(void)goToBeginning
的引用。比调用(void)applicationDidEnterBackground
ViewController
方法
醇>
例如:在- (void)viewDidLoad
{
[super viewDidLoad];
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.myViewController = self;
}
AppDelegate
在您的@class MyViewController;
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (weak, nonatomic) MyViewController *myViewController;
@end
:
AppDelegate
在- (void)applicationDidEnterBackground:(UIApplication *)application
{
[self.myViewController goToBeginning];
}
的实施中:
{{1}}