Как показать UIProgressView для загрузки в моем приложении?
-
18-09-2019 - |
Вопрос
Я хотел бы показать индикатор выполнения, показывающий, какой объем файла был загружен в мое приложение для iPhone.Я знаю, как настроить UIProgressView в IB и все такое.Но для его запуска мне нужны такие данные, как размер файла в байтах.Как мне интегрировать такую функциональность с моим кодом загрузки в байтах (показано ниже)?
- (void)connection:(NSURLConnection *)theConnection didReceiveData:(NSData *)data
// A delegate method called by the NSURLConnection as data arrives. We just
// write the data to the file.
{
#pragma unused(theConnection)
NSInteger dataLength;
const uint8_t * dataBytes;
NSInteger bytesWritten;
NSInteger bytesWrittenSoFar;
assert(theConnection == self.connection);
dataLength = [data length];
dataBytes = [data bytes];
bytesWrittenSoFar = 0;
do {
bytesWritten = [self.fileStream write:&dataBytes[bytesWrittenSoFar] maxLength:dataLength - bytesWrittenSoFar];
assert(bytesWritten != 0);
if (bytesWritten == -1) {
[self _stopReceiveWithStatus:@"File write error"];
break;
} else {
bytesWrittenSoFar += bytesWritten;
}
} while (bytesWrittenSoFar != dataLength);
}
Решение
Вы можете показать пошаговое представление прогресса, если переключитесь на использование библиотеки ASIHTTPRequest.
Я действительно рекомендую вам хотя бы проверить это.Это делает этот материал действительно простым на iPhone, и я использую его для всех своих приложений.Он будет выполнять синхронные и асинхронные подключения, обрабатывать файлы cookie и аутентификацию, а также делает составление POST-запросов действительно простым.Он также имеет встроенную сетевую очередь.