Я действительно застрял на этом.У нас есть IAP, где представление списка является нашим собственным, и мы указываем непосредственно на UADetailView для покупки.Из-за этого у нас нет индикатора выполнения, чтобы сообщить пользователю, как идет загрузка, и наши загрузки большие.Я думал, что могу использовать MBProgressHud, но я столкнулся с проблемой.Кажется, я не могу передать прогресс от UA до HUD.Все работает нормально с HUD, если я использую простой счетчик для его синхронизации.Во многом как их собственный пример.
Вот вызов HUD;
- (void)showWithLabelDeterminate {
HUD = [[MBProgressHUD alloc] initWithView:self.view.window];
[self.view.window addSubview:HUD];
// Set determinate mode
HUD.mode = MBProgressHUDModeDeterminate;
HUD.delegate =self;
HUD.labelText = NSLocalizedString(@"DownLoading","");
// myProgressTask uses the HUD instance to update progress
[HUD showWhileExecuting:@selector(refreshProgress) onTarget:self withObject:nil animated:YES];
}
и обновление, которое я пытаюсь использовать;
- (void)refreshProgress:(float)progress {
while (progress < 1.0f)
NSLog(@"++ progress for HUD: %f", progress);
HUD.progress = progress;
}
Однако, когда я запускаю его, приложение аварийно завершает работу с этим журналом ...
2012-01-30 12: 23: 18.838 isengua-en [12730: 3827] - [UAProductDetailViewController refreshProgress]: нераспознанный селектор отправлен в экземпляр 0x3e2c10 2012-01-30 12: 23: 18.840 isengua-en [12730: 3827] * Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «- [UAProductDetailViewController refreshProgress]: нераспознанный селектор, отправленный экземпляру 0x3e2c10 '* Первый стек вызовов выброса: (0x30caa8bf 0x37e4f1e5 0x30cadacb 0x30cac945 0x30c07680 0x30c0922b 0x36 * 0 0 386 039 03837 0390 03838 0a 0 0 038 0 0 5 0 39 0 0 390 038 5 0 390 038 0 0 5 0 39 0 0 390 038 0 0 5 0 39 0 0 390 039 5Кто-нибудь, кто сталкивался с такой же проблемой и решил ее?
Обновление с изменениями ...
- (void)showWithLabelDeterminate {
HUD = [[MBProgressHUD alloc] initWithView:self.view.window];
[self.view.window addSubview:HUD];
// Set determinate mode
HUD.mode = MBProgressHUDModeDeterminate;
HUD.delegate =self;
HUD.labelText = NSLocalizedString(@"DownLoading","");
// myProgressTask uses the HUD instance to update progress
[HUD showWhileExecuting:@selector(productsDownloadProgress:) onTarget:self withObject:nil animated:YES];
}
- (void)productsDownloadProgress:(float)progress count:(int)count {
HUD.progress = progress;
UALOG(@"[StoreFrontDelegate] productsDownloadProgress: %f count: %d", progress, count);
if (count == 0) {
NSLog(@"Downloads complete !");
}
}
и это на кнопке покупки
- (void)purchase:(id)sender {
self.navigationItem.rightBarButtonItem.enabled = NO;
[UAStoreFront purchase:product.productIdentifier];
[self.navigationController popViewControllerAnimated:NO];
[[UAStoreFront shared] setDelegate:self];
[self showWithLabelDeterminate];
}
Журнал аварий:
2012-01-30 13: 12: 45.555 isengua-en [12886: 6e27] - [UAProductDetailViewController productsDownloadProgress:]: нераспознанный селектор отправлен в экземпляр 0x3f7f70.нераспознанный селектор отправлен в экземпляр 0x3f7f70 '* Первый стек вызовов броска: (0x30caa8bf 0x37e4f1e5 0x30cadacb 0x30cac945 0x30c07680 0x30c0922b 0xf5e21 0x37cbca91 0x37d505a1 0 * 0 0 0 0 0 0) 039