2011-08-23 38 views
0

我通过URL解析XML文件并动态地将值显示为标签。iPhone动态添加UILabel重叠

如果值在XML文件中更改,标签的新值叠加在旧的价值观念

我应该如何修复它

In viewDidLoad 

for(int i=0;i<[appDelegate.books count]; i++){ 
[self createLabel:labelname labelFrame:CGRectMake(LXCOOR, LYCOOR,LWIDTH,LHEIGHT)]; 
} 

-(void) createLabel :(NSString *) aTitle labelFrame:(CGRect) aFrame{ 



    label1 =[[UILabel alloc] initWithFrame:aFrame]; 
    //label.font=[UIFont fontWithName:@"Helvetica" size:TEXTSIZE]; 
    label1.font=[UIFont systemFontOfSize: 10]; 
    label1.textAlignment = UITextAlignmentLeft; 
    label1.text=[NSString stringWithString:aTitle]; 

    label1.textColor=[UIColor blackColor]; 
    label1.backgroundColor = [UIColor clearColor]; 

    [sv addSubview:label1]; 

    [self.view addSubview:sv]; 


} 
+2

这是做你的工作,以错误的方式。您不应该继续添加标签,而应该不断更改您添加的单个标签的文本。 – mayuur

+0

可否请您发布代码 – duk

回答

0

将它添加到视图之前删除SV ...

-(void) createLabel :(NSString *) aTitle labelFrame:(CGRect) aFrame{ 


    if ([[sv subviews] count] > 0) 
{ 
    for(int i=0 ; i< [[sv subviews] count] ; i++) 
    { 
     UIView *subView = [[sv subviews] objectAtIndex:0]; 
     [subView removeFromSuperview]; 
     i++; 
    } 
} 
    [sv removeFromSuperView]; 
    label1 =[[UILabel alloc] initWithFrame:aFrame]; 
    //label.font=[UIFont fontWithName:@"Helvetica" size:TEXTSIZE]; 
    label1.font=[UIFont systemFontOfSize: 10]; 
    label1.textAlignment = UITextAlignmentLeft; 
    label1.text=[NSString stringWithString:aTitle]; 

    label1.textColor=[UIColor blackColor]; 
    label1.backgroundColor = [UIColor clearColor]; 

    [sv addSubview:label1]; 

    [self.view addSubview:sv]; 


} 
+0

只显示最后两个标签 – duk

0

在viewDidLoad中添加,

[self.view addSubview:sv]; 

然后修改“createLabel”功能

-(void) createLabel :(NSString *) aTitle labelFrame:(CGRect) aFrame{ 

for(UIView *tempView in [sv subviews]) { 
    [subView removeFromSuperview]; 
} 

    label1 =[[UILabel alloc] initWithFrame:aFrame]; 
    //label.font=[UIFont fontWithName:@"Helvetica" size:TEXTSIZE]; 
    label1.font=[UIFont systemFontOfSize: 10]; 
    label1.textAlignment = UITextAlignmentLeft; 
    label1.text=[NSString stringWithString:aTitle]; 

    label1.textColor=[UIColor blackColor]; 
    label1.backgroundColor = [UIColor clearColor]; 

    [sv addSubview:label1]; 




} 
+0

同样的问题仍然存在,sv是滚动视图 – duk

0

如上面提到的,你不应该遍地重新创建标签。相反,你应该创造viewDidLoad中它的一个实例(或东西加载一次)

-(void)viewDidLoad { ... 
    //code 
    CGRect aFrame = CGRectMake(x, y, width, height); 
    label1 =[[UILabel alloc] initWithFrame:aFrame]; 
    [sv addSubview:label1]; 
    [self.view addSubview:sv]; 
} 

下一个你应该叫createLabel要,例如点击一个按钮或滚动手势。这应该是你的新createLabel不添加子视图

-(void) createLabel :(NSString *) aTitle labelFrame:(CGRect) aFrame{ 

    label1.font=[UIFont systemFontOfSize: 10]; 
    label1.textAlignment = UITextAlignmentLeft; 
    label1.text=[NSString stringWithString:aTitle]; 

    label1.textColor=[UIColor blackColor]; 
    label1.backgroundColor = [UIColor clearColor]; 

}