我有一个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。感谢。
答案 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 欢呼:)