AppDelegate для вызова функции из m File + presentViewController - PullRequest
0 голосов
/ 06 июня 2018

У меня есть 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 голосов
/ 06 июня 2018

Позвольте мне объяснить, AppDelegate является Singleton объектом, так что вы можете объявить класс AdIntegrator в AppDelegate.h например:

#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 , вам необходимо # import "AppDelegate.h" в OtherViewController.m, чтобы увидеть объект и вызвать метод:

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

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

Вы можете использовать presentViewController: animated: завершение: с объектом AdIntegrator , вызываемым из AppDelegate cheers:)

...