如何从另一个 class 重新加载 ViewController?
How to reload ViewController from another class?
我想在购买成功后重新加载 ViewController
。但是如何从采购class。如何从另一个 class 重新加载 ViewController
?
class IAPObserver: NSObject, SKPaymentTransactionObserver {
func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
for transaction in transactions {
switch transaction.transactionState {
case .purchasing:
break
case .purchased:
delegate?.purchaseStatusDidUpdate(PurchaseStatus.init(state: .complete, error: nil, transaction: transaction, message:"Purchase Complete."))
SKPaymentQueue.default().finishTransaction(transaction)
// code to reload my ViewController
case .failed:
delegate?.purchaseStatusDidUpdate(PurchaseStatus.init(state: .failed, error: transaction.error, transaction: transaction, message:"An error occured."))
SKPaymentQueue.default().finishTransaction(transaction)
case .restored:
delegate?.restoreStatusDidUpdate(PurchaseStatus.init(state: .complete, error: nil, transaction: transaction, message:"Restore Success!"))
SKPaymentQueue.default().finishTransaction(transaction)
case .deferred:
break
}
}
}
您必须在管理 table 视图的视图控制器自身中调用 reloadData()。
幸运的是,您可以使用通知来实现从另一个 class 调用相关函数。
在视图控制器中
override func viewDidLoad() {
super.viewDidLoad()
...
NotificationCenter.default.addObserver(self, selector: #selector(reloadTableViewData), name: NSNotification.Name(rawValue: "reloadData"), object: nil)
}
@objc func reloadTableViewData() {
tableView.reloadData()
}
在您的 class IAPObserver 中,使用以下命令通知您现在要重新加载数据:
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "reloadData"), object: nil)
我想在购买成功后重新加载 ViewController
。但是如何从采购class。如何从另一个 class 重新加载 ViewController
?
class IAPObserver: NSObject, SKPaymentTransactionObserver {
func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
for transaction in transactions {
switch transaction.transactionState {
case .purchasing:
break
case .purchased:
delegate?.purchaseStatusDidUpdate(PurchaseStatus.init(state: .complete, error: nil, transaction: transaction, message:"Purchase Complete."))
SKPaymentQueue.default().finishTransaction(transaction)
// code to reload my ViewController
case .failed:
delegate?.purchaseStatusDidUpdate(PurchaseStatus.init(state: .failed, error: transaction.error, transaction: transaction, message:"An error occured."))
SKPaymentQueue.default().finishTransaction(transaction)
case .restored:
delegate?.restoreStatusDidUpdate(PurchaseStatus.init(state: .complete, error: nil, transaction: transaction, message:"Restore Success!"))
SKPaymentQueue.default().finishTransaction(transaction)
case .deferred:
break
}
}
}
您必须在管理 table 视图的视图控制器自身中调用 reloadData()。 幸运的是,您可以使用通知来实现从另一个 class 调用相关函数。 在视图控制器中
override func viewDidLoad() {
super.viewDidLoad()
...
NotificationCenter.default.addObserver(self, selector: #selector(reloadTableViewData), name: NSNotification.Name(rawValue: "reloadData"), object: nil)
}
@objc func reloadTableViewData() {
tableView.reloadData()
}
在您的 class IAPObserver 中,使用以下命令通知您现在要重新加载数据:
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "reloadData"), object: nil)