Как я могу обновить UIImagesViews по-другому?

Я надеюсь, что кто-то может направить меня в правильном направлении.

Мне нужно иметь возможность обновлять изображения на экране по одному после нажатия кнопки. Похоже, что они обновляются только в конце цикла, а мне это не нужно.

Я создал небольшой пример, чтобы показать, что я делаю. В основном у меня есть 3 изображения на экране. Когда кнопка нажата, я хочу обновить первое изображение, воспроизвести звук, подождать секунду и обновить следующее и т. д.

Однако я слышу только 1 звук, и в конце все изображения обновляются.

Вроде простая вещь. Как я должен это делать?

#import "testappViewController.h"

@implementation testappViewController


@synthesize p1,p2,p3;   //UIImageViews
@synthesize button1;
@synthesize volleyFileID;

- (IBAction)buttonpressed:(id)sender
{
    NSString *TLS = @"RQP.png";

    NSString *volleyPath = [[NSBundle mainBundle] pathForResource:@"click" ofType:@"caf"];
    CFURLRef volleyURL = (CFURLRef ) [NSURL fileURLWithPath:volleyPath];
    AudioServicesCreateSystemSoundID (volleyURL, &volleyFileID);

    TLS = @"RQP.png"; 
    UIImage *sampleimage=   [[UIImage imageNamed:TLS] retain];
    p1.image = sampleimage; 
    AudioServicesPlaySystemSound(volleyFileID);

    [NSThread sleepForTimeInterval:0.5];

    p2.image = sampleimage; 
    AudioServicesPlaySystemSound(volleyFileID);

    [NSThread sleepForTimeInterval:0.5];

    p2.image = sampleimage; 
    AudioServicesPlaySystemSound(volleyFileID);

}

person Community    schedule 17.06.2009    source источник
comment
Возможно, вы захотите переформатировать его с помощью тегов ‹pre›, а также можете включить @interface из testappViewController.h   -  person crackity_jones    schedule 18.06.2009
comment
Рик, почему бы не опубликовать этот код в своем точном дублирующем вопросе: stackoverflow. ком/вопросы/1006866/   -  person Rog    schedule 18.06.2009
comment
Ответ размещен здесь: stackoverflow.com/questions/1006866/   -  person Rog    schedule 18.06.2009


Ответы (1)


Здесь не следует использовать -[NSThread sleepForTimeInterval:]. Попробуйте использовать -[NSObject PerformSelector:withObject:afterDelay:], и ваши последние два изображения превратятся в отдельный метод. Затем ваш цикл событий будет работать как обычно, ваши звуки будут воспроизводиться, и все ваше приложение будет оставаться отзывчивым, пока оно происходит.

person Ben Gottlieb    schedule 17.06.2009