iPhone - заставка с индикатором выполнения

Я попытался создать SplashView, который отображает Default.png в фоновом режиме и UIProgressBar впереди. Но заставка не обновляется ...

Внутри моего контроллера представления я сначала загружаю представление-заставку с параметром, сколько этапов имеет моя инициализация, а затем запускаю второй поток через NSTimer, и после каждого шага инициализации я говорю SplashView отображать новое значение прогресса.

Все выглядит хорошо в теории, но при запуске этого приложения индикатор выполнения не обновляется (метод заставки получает значения, я вижу это в журналах). Я также пытался добавить usleep (10000); в промежутке, чтобы дать представлению обновления немного времени, а также вместо того, чтобы использовать индикатор выполнения, я нарисовал непосредственно в представлении и вызвал [self setNeedsDisplay]; но не всет работа: /

Что я делаю неправильно?

Спасибо за вашу помощь!

Том

Вот некоторый код:

SPLASHSCREEN:
- (id)initWithFrame:(CGRect)frame withStepCount:(int)stepCount {
    if (self = [super initWithFrame:frame]) {
        // Initialization code

        background = [[UIImageView alloc] initWithFrame: [self bounds]];
        [background setImage: [UIImage imageWithContentsOfFile: [NSString stringWithFormat:@"%@/%@", [[NSBundle mainBundle] resourcePath], @"Default.png"]]];
        [self addSubview: background];

        progressView = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleBar];
        [progressView setFrame:CGRectMake(60.0f, 222.0f, 200.0f, 20.0f)];
        [progressView setProgress: 0.0f];

        stepValue = 1.0f / (float)stepCount;

        [self addSubview:progressView];
    }
    return self;
}

- (void)tick {
    value += stepValue;
    [progressView setProgress: value];
}



VIEWCONTROLLER:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {

        splashView = [[SplashView alloc] initWithFrame: CGRectMake(0.0f, 0.0f, 320.0f, 480.0f) withStepCount:9];
        [self setView: splashView];

        NSTimer* delayTimer;
        delayTimer = [NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(finishInitialization) userInfo:nil repeats:NO];
    }
    return self;
}

- (void)finishInitialization {
    // do some stuff, like allocation, opening a db, creating views, heavy stuff...
    [splashView tick]; // this should update the progress bar...

    // do some stuff, like allocation, opening a db, creating views, heavy stuff...
    [splashView tick]; // this should update the progress bar...

    // init done... set the right view and release the SplashView
}

Ответы на вопрос(4)

Ваш ответ на вопрос