我正在我的应用中显示模态应用商店,一切都按预期工作。但是,我希望能够在用户关闭应用程序时解除模态。这可能吗?
这就是我现在设置的方式:
if (param != nil && NSClassFromString(@"SKStoreProductViewController"))
{
NSDictionary *appParameters = @{ SKStoreProductParameterITunesItemIdentifier: param };
SKStoreProductViewController *productViewController = [[SKStoreProductViewController alloc] init];
[productViewController setDelegate:self];
[productViewController loadProductWithParameters:appParameters
completionBlock:^(BOOL result, NSError *error)
{
}];
[self presentViewController:productViewController
animated:YES
completion:^{
}];
}
这样就完成了设置,允许用户通过单击关闭按钮来关闭模式。
- (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController
{
[viewController dismissViewControllerAnimated:YES completion:nil];
}
我以为我可以更改它,因此SKStoreProductViewController *productViewController
是一个成员变量,并且当应用程序停用时只调用一个函数来解除它,但这不能编译iOS 6下的任何内容,对吗?
答案 0 :(得分:1)
只需在视图控制器中保留对该视图控制器的引用:
@property (nonatomic, strong) UIViewController * skStoreProductViewController;
然后创建产品视图控制器:
// Probably in -viewDidLoad ?
if (param != nil && NSClassFromString(@"SKStoreProductViewController"))
{
self.skStoreProuctViewController = [[SKStoreProductViewController alloc] init];
// etc...
}
现在,当用户为您的应用添加背景时,您可以在视图控制器中收听该事件的通知。设置选择器以运行并使用它来关闭视图控制器:
// Probably in -viewDidLoad
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(shouldDismiss:) name:UIApplicationDidEnterBackgroundNotification object:nil];
然后......
- (void)shouldDismiss:(NSNotification*)notification {
[self.skStoreProductViewController dismissViewControllerAnimated:YES completion:nil]
}