![]() |
1
3
您可以使用nstimer延迟进度条的显示,直到您的操作运行了给定的时间,比如说半秒:
在-EndOperation中,取消计时器并隐藏进度条:
如果操作在0.5秒内完成,则在显示进度条之前取消计时器。 |
![]() |
2
7
Jonathan和Darren的回答涵盖了您的实际问题,但我会在标题中添加一些关于问题的内容:“模型应该如何更新其进度的UI?” 当然,答案是它不应该,模型不应该知道 任何东西 关于显示数据的任何协议。应该有一个统一的绑定层,负责将信息从模型传播到接口。幸运的是,Cocoa已经包含了这样一种绑定机制:键值观察。
您应该做的是在任何模型类上定义一个属性,其中进度概念是有意义的,比如
[TheObject AddObserver:Self ForkeyPath:@“Progress”选项:0上下文:空]; 确保阅读nskeyValueObservation(kvo)非正式协议的文档。 此外,您可能还想看看Mike Ash的kvo相关注释和代码: Key-Value Observing Done Right . |
![]() |
3
2
通常要做的一件事是让进度条实现不立即显示自己,并根据前两次更新(或超时)应用一些启发式方法来确定它是否需要显示自己。Java就是这样 ProgressMonitor 例如,行为。(ProgressMonitor是一个很好的抽象,它将进度知识与其图形表示分离开来)。 一旦进度小部件显示出来,你可以在一个悠闲的计时器上重新绘制它,比如说每秒10次,而不是用重新绘制来响应每个进度更改事件。 |
![]() |
KollegeBo · 触发更新的POST或GET 3 年前 |
![]() |
mariolototo · 无法获取“/”express以外的路线 3 年前 |
![]() |
nnmmss · 根据查询字符串值激活li 3 年前 |
![]() |
Ezaldeen Ezaldeen · pdo包装器最后一个id返回0 3 年前 |
![]() |
Bruno Vavretchek · JSON模型建议 7 年前 |
![]() |
Pasha · 如何在@RequestBody中传递2个对象? 7 年前 |