Я не могу заставить мой интерфейс обновляться, когда вызывается мой объект, реализующий SKPaymentTransactionObserver.Обновления пользовательского интерфейса из методов SKPaymentTransactionObserver
В частности, у меня есть (UILabel *) debugLabel в моем пользовательском интерфейсе (все подключены через IB). У меня есть реализация протокола наблюдателя:
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
NSLog(@"paymentQueue: current thread is main thread: %@", [[NSThread currentThread] isMainThread][email protected]"YES":@"NO");
for (SKPaymentTransaction *transaction in transactions) {
if (transaction.transactionState == SKPaymentTransactionStatePurchased) {
// if the store is still being viewed, update appropriately
if(spViewController.storeViewController) {
[spViewController.storeViewController transactionComplete:transaction];
}
}
// other transactionStates omitted for brevity
}
}
[spViewController.storeViewController transactionComplete:transaction]
выполняются, но UILabel не отображает назначенный текст.
- (void) transactionComplete:(SKPaymentTransaction *) transaction {
NSLog(@"CBTSVC transactionComplete");
debugLabel.text = @"CBTSVC transactionComplete";
// other UI updates omitted for brevity
}
Когда код выполняется, то NSLog выводит строку на консоль, но UILabel не обновляется. Я подтвердил, что обратные вызовы, сделанные в SKPaymentTransactionObserver, происходят в основном потоке, поэтому пользовательский интерфейс должен обновляться. (Право?)
Что дает? Должно быть, пропущено что-то простое?
Спасибо за какие-либо идеи, указатели и т.д.