Code Bye

问一下怎么刷新进度条的下载进度(相似百度地图离线下载)

百度地图离线下载显示的进度条怎么更新到UI上,从以下代理函数可以获取到下载的进度,但怎么更新到UI上呢?
//离线地图delegate,用于获取通知
– (void)onGetOfflineMapState:(int)type withState:(int)state
{
if (type == TYPE_OFFLINE_UPDATE) {
//id为state的城市正在下载或更新,start后会毁掉此类型
BMKOLUpdateElement* updateInfo;
updateInfo = [_offlineMap getUpdateInfo:state];
//NSLog(@”城市名:%@,下载比例:%d”,updateInfo.cityName,updateInfo.ratio);
//[self performSelectorOnMainThread:@selector(updateProgress:) withObject:updateInfo  waitUntilDone:NO];
[self performSelector:@selector(updateProgress:) withObject:updateInfo afterDelay:0];

}
if (type == TYPE_OFFLINE_NEWVER) {
//id为state的state城市有新版本,可调用update接口进行更新
BMKOLUpdateElement* updateInfo;
updateInfo = [_offlineMap getUpdateInfo:state];
NSLog(@”能否有更新%d”,updateInfo.update);
}
if (type == TYPE_OFFLINE_UNZIP) {
//正在解压第state个离线包,导入时会回调此类型
}
if (type == TYPE_OFFLINE_ZIPCNT) {
//检测到state个离线包,开始导入时会回调此类型
NSLog(@”检测到%d个离线包”,state);
if(state==0)
{
[self showImportMesg:state];
}
}
if (type == TYPE_OFFLINE_ERRZIP) {
//有state个错误包,导入完成后会回调此类型
NSLog(@”有%d个离线包导入错误”,state);
}
if (type == TYPE_OFFLINE_UNZIPFINISH) {
NSLog(@”成功导入%d个离线包”,state);
//导入成功state个离线包,导入成功后会回调此类型
[self showImportMesg:state];
}

}

解决方案

40

你要采用 MVC 模式来设计这个程序,需要在全局做一个下载管理器(DownloadManager)的模型,在这个 Manager 里做具体的下载工作,有且不限于这些接口:
@interface DownloadManager : NSObject
@property (nonatomic, readonly) NSArray *currentTasks;
- (void)startDownloadWithModel:(City *)city;
@end

下载列表只需要从 Manager 里获取数据并显示就行了。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明问一下怎么刷新进度条的下载进度(相似百度地图离线下载)