2012-10-05 106 views
0

在我的應用程序中,我使用四個UITextViews自定義了UITableView單元。每當我將數據添加到tableview並重新加載它。 UITableViewCell中的文本會覆蓋以前的文本。TableView中的UITextView文本獲取覆蓋?

我嘗試了不同的方法,但無法弄清楚是什麼問題。

我在View Controller中使用TableView。

這是我在我的表格中使用的代碼查看單元格?

if ([tableView isEqual:self.tableActions]) 
{ 
    //Setting the text empty 

    static NSString *CellIdentifier = @"ActionsIdentifier"; 

    cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    if(cell == nil) 
    { 
     cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
     cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton; 
    } 
    NSLog(@"Index Path %i",[indexPath row]); 
    ActionDetails *actiondetails = [actionArray objectAtIndex:[indexPath row]]; 

    NSLog(@"Action Text %@",actiondetails.actions); 

    //Actions 
    actionText=[[UITextView alloc] initWithFrame:CGRectMake(10, 5, 230,30)]; 
    actionText.font = [UIFont systemFontOfSize:17.0]; 
    actionText.editable = NO; 
    actionText.textColor=[UIColor blackColor]; 
    actionText.text = actiondetails.actions ; 
    actionText.userInteractionEnabled = NO; 
    actionText.backgroundColor = [UIColor clearColor]; 
    [cell.contentView addSubview:actionText]; 


    //Owner   
    ownerBy=[[UITextView alloc] initWithFrame:CGRectMake(230, 5, 230,30)]; 
    ownerBy.font = [UIFont systemFontOfSize:17.0]; 
    ownerBy.textColor=[UIColor blackColor]; 
    ownerBy.textAlignment = UITextAlignmentCenter; 
    ownerBy.text = actiondetails.owner; 
    ownerBy.editable = NO; 
    ownerBy.userInteractionEnabled = NO; 
    ownerBy.backgroundColor = [UIColor clearColor]; 
    [cell.contentView addSubview:ownerBy]; 

} 

截圖 enter image description here

感謝您的幫助球員。

備受讚賞。泰伯維的

+0

謝謝您的回答傢伙+1所有您的支持.. – GoCrazy

+0

你得到這個解決方案。我有同樣的問題 –

回答

2

這發生在我身上一天,我想出了if語句創建細胞後,去除細胞的所有子視圖的解決方案。

if(cell == nil) 
{ 
    cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
    cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton; 
} 
if ([cell.contentView subviews]){ 
    for (UIView *subview in [cell.contentView subviews]) { 
     [subview removeFromSuperview]; 
    } 
} 
+0

+1獲得支持 – GoCrazy

1

刪除小區標識,否則採取Customcell爲泰伯維..

+0

感謝您的回覆。對不起你的意思刪除小區標識或採取customcell你已經採取cellidentifier刪除此,並設置小區標識爲零.. '電池=在代碼中實現代碼如下 – GoCrazy

+0

[的tableView dequeueReusableCellWithIdentifier:無];' 和 '細胞= [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];' – Hiren

+0

您正在重複使用單元,這就是爲什麼發生問題的原因 – Hiren

1

只是簡單的嘗試是這樣的:

{ 
     //Setting the text empty 

     static NSString *CellIdentifier = @"ActionsIdentifier"; 

     cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

     **// if(cell == nil) // comment this line in your code ,its work 
     // {** 
      cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
      cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton; 
     **// }** 
     NSLog(@"Index Path %i",[indexPath row]); 
     ActionDetails *actiondetails = [actionArray objectAtIndex:[indexPath row]]; 

     NSLog(@"Action Text %@",actiondetails.actions); 

     //Actions 
     actionText=[[UITextView alloc] initWithFrame:CGRectMake(10, 5, 230,30)]; 
     actionText.font = [UIFont systemFontOfSize:17.0]; 
     actionText.editable = NO; 
     actionText.textColor=[UIColor blackColor]; 
     actionText.text = actiondetails.actions ; 
     actionText.userInteractionEnabled = NO; 
     actionText.backgroundColor = [UIColor clearColor]; 
     [cell.contentView addSubview:actionText]; 


     //Owner   
     ownerBy=[[UITextView alloc] initWithFrame:CGRectMake(230, 5, 230,30)]; 
     ownerBy.font = [UIFont systemFontOfSize:17.0]; 
     ownerBy.textColor=[UIColor blackColor]; 
     ownerBy.textAlignment = UITextAlignmentCenter; 
     ownerBy.text = actiondetails.owner; 
     ownerBy.editable = NO; 
     ownerBy.userInteractionEnabled = NO; 
     ownerBy.backgroundColor = [UIColor clearColor]; 
     [cell.contentView addSubview:ownerBy]; 

    } 
+0

感謝您的支持+1 – GoCrazy

1

正在重用的單元格。重複使用的單元格已經添加了UITextview。因此,您正在覆蓋它。 您必須將您創建和添加UITextView的所有代碼轉移到。

如果(細胞==零) {

}

在這之後,你只需要設置文本的UITextView。

0

當您的視圖確實出現寫重新加載您的表視圖。

-(void)viewDidAppear:(BOOL)animated {  
[tableView reloadData]; 
} 
+0

我做相同的,但它不工作 – GoCrazy

0

改變你的cellForRowAtIndexPath方法

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
    { 

     NSString *CellIdentifier = [NSString stringWithFormat:@"S%1dR%1d",indexPath.section,indexPath.row]; 

     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
     if (cell == nil) 
     { 
      cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 

      // your code 

     } 

      // your code 

     return cell;  

    } 
0
for (id vw in [[cell contentView] subviews]) { 
    if ([vw isKindOfClass:[UILabel class]]) 
    { 
     UILabel *label = (UILabel *)vw; 
     [label removeFromSuperview]; 
    } 
} 

for (id vw in [cell subviews]) { 
    if ([vw isKindOfClass:[UILabel class]]) 
    { 
     UILabel *label = (UILabel *)vw; 
     [label removeFromSuperview]; 
    } 
}