Я использую этот код:
NSURLConnection *oConnection=[[NSURLConnection alloc] initWithRequest:oRequest delegate:self];
, чтобы загрузить файл, и я хочу обновить индикатор выполнения для загруженного подпредставления. Для этого я использую этот код:
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[oReceivedData appendData:data];
float n = oReceivedData.length;
float d = self.iTotalSize;
NSNumber *oNum = [NSNumber numberWithFloat:n/d];
self.oDPVC.oProgress.progress = [oNum floatValue];
}
Подвид - oDPVC, а индикатор выполнения - oProgress. Установка свойства progress не обновляет элемент управления.
Из того, что я прочитал в Интернете, многие люди хотят это сделать, но пока нет полного, надежного образца. Также есть много противоречивых советов. Некоторые люди думают, что вам не нужна отдельная тема. Некоторые говорят, что вам нужен фоновый поток для обновления прогресса. Некоторые говорят «нет», делают другие вещи в фоновом режиме и обновляют прогресс в главном потоке.
Я испробовал все советы, и ни один из них мне не помог.
Еще одна вещь, может быть, это ключ. Я использую этот код для загрузки подпредставления во время applicationDidFinishLaunching:
self.oDPVC = [[DownloadProgressViewController alloc] initWithNibName:@"DownloadProgressViewController" bundle:nil];
[window addSubview:self.oDPVC.view];
В файле XIB (который я рассмотрел как в Интерфейсном Разработчике, так и в текстовом редакторе) индикатор выполнения имеет ширину 280 пикселей. Но когда открывается вид, он как-то настраивается на половину этой ширины. Также фоновым изображением представления является default.png. Вместо того, чтобы отображаться прямо поверх изображения по умолчанию, оно растягивается примерно на 10 пикселей, оставляя белую полосу в нижней части экрана.
Может быть, это отдельная проблема, а может и нет.