Добавление UIButtons к UIScrollView программно не отображается до завершения цикла - PullRequest
0 голосов
/ 04 февраля 2012

Я новичок в программировании на Objective C и IOS, поэтому, пожалуйста, будьте терпеливы со мной.

Я получаю строку JSON с моего сервера, которую я использую для добавления изображений или кнопок в мое представление, мой вид - UIScrollView,

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

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

Спасибо

for (NSDictionary *num in jsonOBJ) {

        fullURL = [urlWithOut stringByAppendingString:[num objectForKey:@"src"]];

        img = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL: [NSURL URLWithString:fullURL]]];
        button = [UIButton buttonWithType:UIButtonTypeCustom];
        button.frame = CGRectMake(3+i*h, 3+i*w,76, 76);
        button.layer.borderWidth = 1.0;
        button.layer.borderColor = [UIColor redColor].CGColor;

        [button addTarget:self action:@selector(push:) forControlEvents:UIControlEventTouchUpInside];

        [self.scroll addSubview:button];

        [button setImage:img forState:UIControlStateNormal];
        [img release];

        NSString *string = @"";
        NSString *realstring = [string stringByAppendingString: [num objectForKey:@"id"]];

        button.tag = [realstring intValue];

        self.scroll.contentSize = CGSizeMake(320,total);
    }

1 Ответ

1 голос
/ 04 февраля 2012

Вам нужно запустить процесс загрузки изображения в фоновом потоке, который должен его решить. Я объясню - загрузка изображений останавливает пользовательский интерфейс, в то время как цикл на самом деле все еще работает, добавляя кнопки с изображениями, но они не будут отображаться, пока не будут загружены все изображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...