为什么UIView只显示最后一个视图?

时间:2015-08-05 09:34:37

标签: ios iphone storyboard

我必须根据数组数据显示相同的视图。所以我通过使用故事板创建一个视图,它将相互低于一致。我的代码如下。

在.h文件中,

@interface Doctors : UIViewController{
NSMutableArray *dataarr;
}

@property (strong, nonatomic) IBOutlet UIView *nameView;
@property (strong, nonatomic) IBOutlet UILabel *nameLbl;
@property (strong, nonatomic) IBOutlet UIView *Scroller;
@property (strong, nonatomic) IBOutlet UIView *ContentView;

在.m文件中

dataarr = [[NSMutableArray alloc]initWithObjects:@"Ram",@"Suresh",@"Anil", nil];
for (int i=0; i<dataarr.count; i++) {
    CGRect newframe = nameView.frame;
    nameLbl.text = [dataarr objectAtIndex:i];
    newframe.origin.y = nameView.layer.frame.origin.y + nameView.layer.frame.size.height;
    nameView.frame = newframe;
    [self.ContentView addSubview:nameView];
}

此代码仅显示最后一个视图。我附上了截图。 enter image description here

我期待看到这个屏幕。

enter image description here

为什么不显示前两个视图?有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:0)

试试这样 的更新

float topMargin = 10;
for (int i=0; i<dataarr.count; i++) {
    nameLbl = [[UILabel alloc]init];
    CGRect newframe = CGRectMake(0,topMargin,320,40);
    nameLbl.text = [dataarr objectAtIndex:i];
    newframe.origin.y = nameView.layer.frame.origin.y + nameView.layer.frame.size.height;
    nameLbl.frame = newframe;
    [self.ContentView addSubview: nameLbl];
     topMargin+=yourHeight+10;
 }

答案 1 :(得分:0)

当然,您的代码没有按照您的期望进行。

从您的代码中,您只有一个视图和一个标签,您的循环只会更新您的标签文字和视图的位置。

如果你继续使用故事板,那么你必须再添加两个“nameView”和另外两个“nameLbl”。

但是,我们可以在没有故事板的情况下以编程方式进行。

NSMutableArray *dataArray = [[NSMutableArray alloc]initWithObjects:@"Ram",@"Suresh",@"Anil", nil];

float yPosition = 50;

for (NSString *textString in dataArray) {
    //Alloc and add a view to your contentView
    UIView *viewToAddLabel = [[UIView alloc] initWithFrame:CGRectMake(0, yPosition, self.view.frame.size.width, 30)];

    //Alloc new Label
    UILabel *textLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 5, viewToAddLabel.frame.size.width - 20, viewToAddLabel.frame.size.height - 10)];
    textLabel.text = textString;

    //Add your label to viewToAddLabel
    [viewToAddLabel addSubview:textLabel];

    //add viewToAddLabel To your content View
    [_contentView addSubview:viewToAddLabel];

    //Update your yPosition
    yPosition += 20 + viewToAddLabel.frame.size.height;
}