从app delegate调用UIViewController方法

时间:2013-09-23 01:42:17

标签: ios objective-c uiviewcontroller appdelegate

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

当用户返回主页时(void)applicationDidEnterBackgroundAppDelegate类调用。但是,一旦用户按下主页按钮,我不希望用户再次看到此视图控制器,因此我有一个名为(void)goToBeginning的方法切换到另一个视图控制器。我希望能够从AppDelegate调用此方法。我真的不想使用NotificationCenter。这里选择的解决方案: Calling view controller method from app delegate 对我来说不起作用,因为它初始化新对象,而我希望能够调用已在视图中的对象。我怎样才能做到这一点?我使用的是iOS 7和XCode 5.

1 个答案:

答案 0 :(得分:42)

  1. 通知。但你不想要这个。
  2. 您可以在viewController中获得对AppDelegate (void)goToBeginning的引用。比调用(void)applicationDidEnterBackground
  3. 中的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}}