Как перезагрузить ViewController из другого класса?

Я хочу перезагрузить свой ViewController после успешной покупки. Но как это сделать из класса покупки. Как перезагрузить 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
            }
        }
    }

Ответы (1 шт):

Автор решения: Denis Shchigolev

Как один из вариантов через NotificationCentr отправить уведомления, а во ViewController подписаться на них:

отправляем:

NotificationCenter.default.post(name: NSNotification.Name("Complite"), object: nil)

подписываемся:

NotificationCenter.default.addObserver(self, selector: #selector(updateView), name: NSNotification.Name(rawValue: "Сomplite"), object: nil)

а так же добавляем новый метод для селектора, как раз в котором и обновим все визуальные элементы viewController:

@objc private func updateView() {
        //тут обновляем все визуальные элементы
        print("Payment complite, view is update")
    }

в deinit() viewController не забываем отписаться от уведомлений:

deinit(){
    NotificationCenter.default.removeObserver(self)
} 
→ Ссылка