2011-08-23 35 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]; 

}