2017-11-12 3 views
1

私は、バックグラウンドビューを隠すべき製品を購入するボタンを持っているので、ユーザーはアプリケーションの拡張機能を使用することができなくなります。ボタンを押すと、製品を購入するためのコードが外部ファイルから取得されます。このため、購入が成功したときに、私は視界を隠す方法を知っています。他のファイルから成功した場合のアプリ内購入コール機能

コード

for transaction: AnyObject in transactions { 
     if let trans: SKPaymentTransaction = transaction as? SKPaymentTransaction { 
      switch trans.transactionState { 
      case .purchased: 
       print("Product Purchased") 
       let purchased = UserDefaults.standard.bool(forKey: 
"Analytics") 
       UserDefaults.standard.set(true, forKey: "Analytics") 

は、それが外部の迅速ファイルからView Controllerクラスに関数を呼び出すことはできますか?それ以外の方法で問題に近づけることはできますか?

+0

他のファイルに代理人を設定し、このクラスに設定してください – carbonr

+0

[委任](https://stackoverflow.com/questions/40501780/examples-of-delegates-in-swift/40503024#40503024)は、そのような問題に対しては良い選択肢です。 –

答えて

1

ブロックまたはデリゲートを使用して、情報を返すことができます。 PaymentClassサブクラスインサイド

デリゲートあなたはオーバーレイが、このデリゲートイベントが完了すると、支払クラス内

を設定見せているViewControllerで今

protocol PaymentDelegate { 
    func payment(completed: Bool) 
} 

class YourExternalPaymentClass { 
    weak var delegate: PaymentDelegate? 
} 

に宣言し、あなたのメソッドを呼び出す

self.delegate?.payment(completed: true) 

このようにして、データをViewControllerに戻すことができ、非表示にすることができます。あなたが望むものは何でも。

関連する問題