NSProgress是一个用于管理和跟踪任务进度的类,可以用于处理分层进度上报。下面是一个简单的示例,演示如何使用NSProgress处理分层进度上报:
NSProgress *rootProgress = [NSProgress progressWithTotalUnitCount:100];
NSProgress *subProgress1 = [NSProgress progressWithTotalUnitCount:50];
NSProgress *subProgress2 = [NSProgress progressWithTotalUnitCount:50];
[rootProgress addChild:subProgress1 withPendingUnitCount:50];
[rootProgress addChild:subProgress2 withPendingUnitCount:50];
[rootProgress addObserver:self forKeyPath:@"fractionCompleted" options:NSKeyValueObservingOptionNew context:NULL];
[subProgress1 addObserver:self forKeyPath:@"fractionCompleted" options:NSKeyValueObservingOptionNew context:NULL];
[subProgress2 addObserver:self forKeyPath:@"fractionCompleted" options:NSKeyValueObservingOptionNew context:NULL];
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context {
if (object == rootProgress) {
NSLog(@"Root progress: %.2f", rootProgress.fractionCompleted);
} else if (object == subProgress1) {
NSLog(@"Sub-progress 1: %.2f", subProgress1.fractionCompleted);
} else if (object == subProgress2) {
NSLog(@"Sub-progress 2: %.2f", subProgress2.fractionCompleted);
}
}
[subProgress1 setCompletedUnitCount:25];
[subProgress2 setCompletedUnitCount:30];
// 更新子进度对象完成的单元数量,根进度对象会自动更新
通过以上步骤,您可以使用NSProgress处理分层进度上报,并在UI中显示相应的进度变化。您也可以根据具体需求来扩展和定制进度的管理和展示方式。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。