将UIButtons添加到UIScrollView以编程方式在循环完成之前不显示

时间:2012-02-04 08:33:03

标签: iphone objective-c ios

我是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 个答案:

答案 0 :(得分:1)

你需要在后台线程中运行图像加载过程,这应该解决它。我将解释 - 图像加载会在循环实际仍在运行时停止UI,添加带图像的按钮,但在加载所有图像之前它们不会显示。