快速关闭弹出窗口后刷新视图

Don*_*one 5 popup ios swift2

我正在YouTube上观看本教程,并且在弹出窗口中添加了按钮。按钮正在添加硬币(IAP),但是问题是当我关闭弹出窗口时,它不会刷新视图以查看更新的硬币。如果我按下后退按钮,然后再次出现,它将被更新。

所以问题是如何在按下关闭按钮后刷新父视图。

这是popupVC

import UIKit

class PopUpViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()

    self.view.backgroundColor = UIColor.blackColor().colorWithAlphaComponent(0.8)

    self.showAnimate()

    // Do any additional setup after loading the view.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

@IBAction func closePopUp(sender: AnyObject) {
    self.removeAnimate()
    //HERE SHOULD BE CODE TO RELOAD PARENT VIEWCONTROLER
}

func showAnimate()
{
    self.view.transform = CGAffineTransformMakeScale(1.3, 1.3)
    self.view.alpha = 0.0;
    UIView.animateWithDuration(0.25, animations: {
        self.view.alpha = 1.0
        self.view.transform = CGAffineTransformMakeScale(1.0, 1.0)
    });
}

func removeAnimate()
{
    UIView.animateWithDuration(0.25, animations: {
        self.view.transform = CGAffineTransformMakeScale(1.3, 1.3)
        self.view.alpha = 0.0;
        }, completion:{(finished : Bool)  in
            if (finished)
            {
                self.view.removeFromSuperview()
            }
    });



@IBAction func btnAddCoins(sender: UIButton) {


    for product in list {
        let prodID = product.productIdentifier
        if(prodID == "XXXX") {
            p = product
            buyProduct()
            break;
        }
    }
}
}
Run Code Online (Sandbox Code Playgroud)

我没有复制所有IAP代码。

在此处输入图片说明

Mob*_*Ben 0

一个简单的方法是使用委托来处理这个问题。这个想法是,当您创建您的代理时,PopUpViewController您将为其分配委托。这意味着父 VC 符合委托。

委托的示例如下。请注意,建议支持处理成功、失败和取消的方法。

此代码均未经过编译测试,仅供参考。

protocol IAPDelegate {
    func purchaseSuccessful()
    func purchaseCancelled()
    func purchaseFailed()
}
Run Code Online (Sandbox Code Playgroud)

你的班级会变成这样。我省略了你的一堆代码。您还需要弄清楚在哪里处理purchaseCancelled和purchaseFailed。此外,您可能想为调用提供更多信息(即参数),但我将其留给您自行解决。

class PopUpViewController: UIViewController {
    weak var iapDelegate : IAPDelegate?

    // Your other code here
    @IBAction func closePopUp(sender: AnyObject) {
        self.removeAnimate()
        iapDelegate?.purchaseSuccessful()
    }
}
Run Code Online (Sandbox Code Playgroud)

我在这里打电话给你的父母 VCParentViewController会是这样的

class ParentViewController: UIViewController, IAPDelegate
Run Code Online (Sandbox Code Playgroud)

顺便说一句,您应该考虑更好的类命名。如果PopUpViewController确实是您的 IAP 购买 VC,则如此命名。如果您想要另一个弹出视图控制器会发生什么?你打算给它起什么名字?