2015-08-05 2 views
0

Мне нужно показать тот же вид, основанный на данных массива. Поэтому я создаю представление, используя раскадровку, которая будет подходить друг к другу. Мой код ниже.Почему UIView показывает только последний вид?

В файле .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

Почему не показывают первые две точки зрения? Кто-нибудь может мне помочь?

+0

Потому что вы используете только один вид? Итак, каждый раз, когда вы меняете свой контент и кадр? – Larme

+0

Да, я хочу переделать один и тот же вид, но я не получаю успех – Ashu

ответ

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; 
} 
+0

Не работает ... :( – Ashu

+0

Попробуйте сейчас, я обновил свой ответ ... –

+0

Нет, он показывает тот же результат. – Ashu

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; 
} 
Смежные вопросы