建议如何呈现#records的计算

时间:2011-10-16 14:22:15

标签: objective-c uiprogressview

我的应用程序有很多记录,我正在加载到核心数据DB中。实际加载是在名为“loadDBRecords”的模块中完成的。该模块从“MainViewController”调用,它连接到“MainViewController.xib”。

由于加载需要相当长的时间,我在加载过程中向.xib添加了一个UIActivityIndi​​catorView。但是,我想使用UIProgressView。当我看到这个时,除非我将加载代码从“loadDBRecords”移动到“MainViewController”,否则我看不到任何使用方法。

我的问题是:在我的设置中利用UIProgressView的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以向-loadDBRecords方法添加“progressHandler”块。对您加载的每条记录执行该块,并在0.01.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);
    }
}