Iphone MultiThreading - Как я могу обновить события в интерфейсе (mainthread) из фонового потока? - PullRequest
1 голос
/ 13 января 2010

1.My mainView - это UIScrollView. Я должен загрузить 9 изображений в качестве плиток на него.

2. Я вызываю функцию как другой поток, чтобы получить 9image и загрузить его в интерфейс (mainthread). При этом интерфейс остается отзывчивым.

3.Но проблема, даже когда изображения загружаются, они не отображаются в UIScrollView, пока весь поток не будет завершен. Но если я делаю какие-то действия с интерфейсом, я могу видеть, как каждый из них загружается и отображается.

  1. Означает, что я должен обновить интерфейс (mainthread) из фонового потока после загрузки каждого изображения в него. * +1007 *

Как я могу это сделать? Я дал код, который я использую для загрузки изображений в UIScrollView, который я вызываю, используя другой поток.

- (void)setUpDisplay:(NSArray *)array 
{
NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];

myScrollView.userInteractionEnabled = YES;
myScrollView.multipleTouchEnabled = YES;

int x=0,y=0;
CGRect frame;
for (i = 0; i < 3; i++)
{
    if(j == 3)
    {
        x=x+256;
        y = y-768;
    }
    for (j = 0; j < 3; j++) {
        imageView = [[UIImageView alloc] initWithImage:[self getCachedImage:[NSString stringWithFormat:@"url to fetch images"]]];
        frame = [imageView frame];
        frame.origin.x = x;
        frame.origin.y = y;
        [imageView setFrame:frame];
        imageView.userInteractionEnabled = YES;
        imageView.multipleTouchEnabled = YES;
        [myScrollView addSubview:imageView];
        y = y+256;

        [imageView release];
        imageView=nil;
    }
}

[pool release];
}

Ответы [ 2 ]

2 голосов
/ 13 января 2010

Этот метод NSObject часто полезен:

[someObject performSelectorOnMainThread:@selector(updateUI:) withObject:anotherObject waitUntilDone:YES /* or NO */];
0 голосов
/ 13 января 2010

Вы можете попытаться вызвать [myScrollView setNeedsDisplay] в главном потоке после завершения загрузки каждого изображения.

...