我必须根据数组数据显示相同的视图。所以我通过使用故事板创建一个视图,它将相互低于一致。我的代码如下。
在.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];
}
我期待看到这个屏幕。
为什么不显示前两个视图?有人可以帮帮我吗?
答案 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;
}