AppDelegate从m File + presentViewController调用函数

时间:2018-06-05 21:32:32

标签: objective-c appdelegate

我有一个AdIntegrator.mm文件,其中包含创建表单的函数:

 -(void)createAndDisplayForm{
     AppDelegate* app = (AppDelegate*)[[UIApplication sharedApplication] delegate];          //add AppDelegate pointer
     _vc = app.window.rootViewController;

    //create form

    //presented using presentFromViewController:_vc
 }

我希望能够在我需要的时候从AppDelegate.mm再次使用此表单,(如果User希望再次看到此表单)。

我怎么称呼它?

我在AppDelegate.mm尝试了以下内容,但未显示任何视图:

AdIntegrator* opt = [[AdIntegrator alloc] init];
[opt createAndDisplayForm];

任何人都可以告诉我从AppDelegate使用此功能的最佳方法,以及确保再次看到presentFromViewController。感谢。

1 个答案:

答案 0 :(得分:0)

让我解释一下, AppDelegate 是一个Singleton对象,因此您可以在 AppDelegate.h中声明 AdIntegrator 像这样:

#import "AdIntegrator.h"

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;
@property (nonatomic) AdIntegrator *adIntegratorObject;

@end

在你的AppDelegate.m中你需要这样做:

@interface AppDelegate ()
@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    _AdIntegrator = [[AdIntegrator alloc] init];
    // or like this [AdIntegrator new];

    return YES;
}

_AdIntegrator 对象是AppDelegate单例中的引用  从任何地方调用该方法,所以你可以从 OtherViewController.m 执行此操作,你需要在OtherViewController.m中 #import“AppDelegate.h”来查看对象和打电话给方法:

- (void)methodExampleFromOtherViewController
{
    AppDelegate *appObject = (AppDelegate*)[[UIApplication sharedApplication] delegate];

    // Calling your method in adIntegratorObject class
    [appObject.adIntegratorObject YOUR_METHOD_CALL];
}

您可以使用 presentViewController:animated:completion:方法,并使用 AdDetegrator 对象从 AppDelegate 欢呼:)