我的应用程序有很多记录,我正在加载到核心数据DB中。实际加载是在名为“loadDBRecords”的模块中完成的。该模块从“MainViewController”调用,它连接到“MainViewController.xib”。
由于加载需要相当长的时间,我在加载过程中向.xib添加了一个UIActivityIndicatorView。但是,我想使用UIProgressView。当我看到这个时,除非我将加载代码从“loadDBRecords”移动到“MainViewController”,否则我看不到任何使用方法。
我的问题是:在我的设置中利用UIProgressView的最佳方法是什么?
答案 0 :(得分:0)
您可以向-loadDBRecords
方法添加“progressHandler”块。对您加载的每条记录执行该块,并在0.0
和1.0
之间传回一个浮点值,指示到目前为止的进度。然后,块可以将该值分配给进度条,或将其打印到控制台,或者您需要它执行的任何操作。 (传统上,这将通过函数指针或委托/选择器组合来完成,但我发现块会使您的意图更清晰 - 或者至少可以更容易地显示您的意图。)
- (void)loadDBRecords:(void (^)(CGFloat progress))progressHandler {
NSUInteger count = /* number of records*/;
for (NSUInteger i = 0; i < count; i++) {
/* load the record */
progressHandler((CGFloat)n / (CGFloat)count);
}
}