Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 应用内购买后更新UITableView_Ios_Swift_Uitableview - Fatal编程技术网

Ios 应用内购买后更新UITableView

Ios 应用内购买后更新UITableView,ios,swift,uitableview,Ios,Swift,Uitableview,我在我的SKPaymentTransactionObserver中有以下代码,我已经确认在我完成沙箱购买时,它运行.purchased案例 func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) { for transaction in transactions { switch transa

我在我的
SKPaymentTransactionObserver
中有以下代码,我已经确认在我完成沙箱购买时,它运行
.purchased
案例

func paymentQueue(_ queue: SKPaymentQueue,
                  updatedTransactions transactions: [SKPaymentTransaction]) {
    for transaction in transactions {
        switch transaction.transactionState {
        case .purchasing, .deferred: break
        case .purchased, .restored:
            Settings.didPurchase = true
            DispatchQueue.main.async {
                tableView.reloadData()
            }
            SKPaymentQueue.default().finishTransaction(transaction)
        case .failed: // other code here
        }
    }
}
my
UITableView的数据源包括以下功能:

func numberOfSections(in tableView: UITableView) -> Int {
    return Settings.didPurchase ? 3 : 4
}
调试时,我确认在调用
tableView.reloadData()
之后调用了此函数,并且在购买后返回
3
。但是,视图不会更新以包含额外的部分。只有当我关闭整个视图并在完成购买后重新加载它时,它才会更新,在这种情况下,它会触发另一个表视图重新加载,看起来就像应该的那样


我的理论是,因为当我调用
reloadData()
时,
UITableView
不是顶级视图(它被苹果的一条警告覆盖,说购买成功),它不会更新视图,认为它不可见。但是,这合理吗?不管怎样,我如何修复代码,以便在用户完成购买时视图按预期更新?

是否调试了调用的重新加载tableview方法?同一ViewController中有多少个tableview?是的,我确认调用了重新加载数据。我在ViewController中只有一个TableView。