我有一个购买产品的按钮,该产品应隐藏背景视图,以防止用户使用应用程序的扩展程序。按下按钮时,购买产品的代码来自外部文件。因此,我知道在购买成功时隐藏视图的方法。
来自其他档案的代码
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")
是否可以从外部swift文件向视图控制器类调用函数?还有什么方法可以解决这个问题?
答案 0 :(得分:1)
您可以使用块或代理来传回信息。
PaymentClass
子类内部声明一个委托
protocol PaymentDelegate {
func payment(completed: Bool)
}
class YourExternalPaymentClass {
weak var delegate: PaymentDelegate?
}
现在在显示叠加层的ViewController
中配置此委托
在事件完成的付款类中,调用您的方法
self.delegate?.payment(completed: true)
这样可以将数据传递回ViewController,您可以隐藏或显示您想要的任何内容。