【问题标题】:Dismiss Modal App store on App close在应用关闭时关闭模态应用商店
【发布时间】:2014-03-18 16:50:45
【问题描述】:

我正在我的应用中显示模态应用商店,一切都按预期工作。但是,我希望能够在用户关闭应用程序时关闭模式。这可能吗?

这就是我目前的设置方式:

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 下编译,对吗?

【问题讨论】:

  • ivar/property 路线是要走的路,但是您不必将 ivar 声明为 SKStoreProductViewController 类型,您可以将其声明为 UIViewController
  • 啊,当然,傻我!谢谢!

标签: ios ios7 ios6 app-store modalviewcontroller


【解决方案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]  
}

【讨论】:

  • 这很有道理,谢谢!没想到要为此使用 NotificationCenter,好建议!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-06
  • 2012-12-18
  • 1970-01-01
  • 2013-04-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多