尝试以编程方式从一个XIB文件创建多个视图

时间:2014-05-19 18:37:54

标签: ios xcode ipad ios7 xib

我有一个启用了页面的滚动视图,我希望用UIViews填充。我试过创建一个" XIB"文件并在for循环中从中加载,但这只在我的滚动视图中给了我一个UIView

    int amount = garments.count;
[self.pageControl setNumberOfPages:amount];

for (int i = 0; i < amount; i++) {
    DOVGarment *garment = garments[i];

    CGRect frame;
    frame.origin.x = self.scrollView.frame.size.width * i;
    frame.size = self.scrollView.frame.size;

    DOVGarmentDetailView *view = [DOVGarmentDetailView new];

    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"detailView" owner:view options:nil];

    view = [topLevelObjects objectAtIndex:0];

    view.image.image = [UIImage imageNamed:garment.fileName];
    view.labelID.text = garment.ID;

    [self.scrollView addSubview:view];
}

self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * amount, self.scrollView.frame.size.height);

任何人都知道为什么这不起作用?或者,如果这是可能的?

2 个答案:

答案 0 :(得分:2)

您放置在xib文件中的每个视图对象只有一个实例。因此,您的for循环的每个运行周期都访问相同的UIView实例。 如果您需要在for循环的每个运行周期中再次分配和初始化视图,请填写您的scrollView,从而创建许多UIView实例。

我就是这样做的,它将UIViews水平放置在我的scrollView -

for (int i = 0; i<numberOfViews; i++)

            {

                UIView*smallView = [[UIView alloc]initWithFrame:CGRectMake((i*scrollview.frame.size.width+heightOfYourView), 0, scrollview.frame.size.width, scrollview.bounds.size.height)];
[scrollview addSubview: smallView];

             }
scrollview.contentSize = CGSizeMake(numberOfViews*scrollview.frame.size.width,    scrollview.frame.size.height);

答案 1 :(得分:2)

您正在创建多个视图,但您没有更改框架,因此它们将全部直接放在彼此之上。

更新代码以相对于

之前创建的视图偏移每个视图