12

我知道这个问题有重复,但我的情况在这里不同。

当用户回到家(void)applicationDidEnterBackground时,会从AppDelegate类中调用。但是一旦用户按下主页按钮,我不希望用户再次看到这个视图控制器,所以我有一个名为(void)goToBeginning切换到另一个视图控制器的方法。我希望能够从 AppDelegate 调用此方法。我真的不想用NotificationCenter这个。这里也选择了解决方案: 从应用程序委托调用视图控制器方法 对我不起作用,因为它初始化了新对象,而我希望能够调用已经在视图中的对象。我怎样才能做到这一点?我正在使用 iOS 7 和 XCode 5。

4

1 回答 1

42
  1. 通知。但你不想要这个。
  2. 您可以viewControllerAppDelegate. 比(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's 的实现中:

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    [self.myViewController goToBeginning];
}
于 2013-09-23T01:53:24.233 回答