0

次のコードを使用して、テーブルビューにいくつかのラベルとテキストビューを表示しています。しかし、問題は、スクロール中にいくつかの不要な場所で一部のテキストビューが上書きされることです。私を助けてください 。前もって感謝します

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

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    cell.selectionStyle                                         =   UITableViewCellSelectionStyleNone;
    cell.backgroundColor=[UIColor whiteColor];
    if (indexPath.row==0) 
    {
        UILabel *Sender = [[UILabel alloc] initWithFrame:CGRectMake(20, 10, 200, 20)];
        Sender.text=@"From Time";
        Sender.textColor=[UIColor colorWithRed:77.0/255.0 green:104.0/255.0 blue:159.0/255.0 alpha:1.0]; 
        Sender.font=[UIFont fontWithName:@"verdana" size:16];
        [cell addSubview:Sender];
        [Sender release];  

    }

    if (indexPath.row==1) 
    {
        UILabel *Sender = [[UILabel alloc] initWithFrame:CGRectMake(20, 10, 200, 20)];
        Sender.text=@"Sender";
        Sender.textColor=[UIColor colorWithRed:77.0/255.0 green:104.0/255.0 blue:159.0/255.0 alpha:1.0]; 
        Sender.font=[UIFont fontWithName:@"verdana" size:16];
        [cell addSubview:Sender];
        [Sender release];  
        UILabel *Label = [[UILabel alloc] initWithFrame:CGRectMake(30, 35, 200, 20)];
        Label.text=@"Achuthananthan";
        Label.font=[UIFont fontWithName:@"verdana" size:14];
        [cell addSubview:Label];
        [Label release]; 
    }
    if (indexPath.row==2) 
    {
        UILabel *Agenda = [[UILabel alloc] initWithFrame:CGRectMake(20, 10, 200, 20)];
        Agenda.text=@"Agenda";
        Agenda.textColor=[UIColor colorWithRed:77.0/255.0 green:104.0/255.0 blue:159.0/255.0 alpha:1.0]; 
        Agenda.font=[UIFont fontWithName:@"verdana" size:16];

        [cell addSubview:Agenda];
        [Agenda release]; 
        UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(20, 30, 280, 120)];
        textView.editable=NO;
        textView.text=[NSString stringWithString:@"Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda."];
        textView.font=[UIFont fontWithName:@"verdana" size:14];
        [cell addSubview:textView];

        [textView release];

    }
    return cell;
}
4

2 に答える 2

0

このコードを使用してください...

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

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    cell.selectionStyle =   UITableViewCellSelectionStyleNone;
        cell.backgroundColor=[UIColor whiteColor];

 UILabel *Sender = [[UILabel alloc] initWithFrame:CGRectMake(20, 10, 200, 20)];
     [sender setTag:500];
Sender.font=[UIFont fontWithName:@"verdana" size:16];
    Sender.textColor=[UIColor colorWithRed:77.0/255.0 green:104.0/255.0 blue:159.0/255.0 alpha:1.0]; 
    [cell addSubview:Sender];
    [Sender release];  

    UILabel *Label = [[UILabel alloc] initWithFrame:CGRectMake(30, 35, 200, 20)];
    Label.text=@"Achuthananthan";
    Label.font=[UIFont fontWithName:@"verdana" size:14];
    [Label setTag:600];
    [cell addSubview:Label];
    [Label release]; 

UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(20, 30, 280, 120)];
    textView.editable=NO;
[Label setTag:700];
    textView.text=[NSString stringWithString:@"Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda."];
    textView.font=[UIFont fontWithName:@"verdana" size:14];
    [cell addSubview:textView];
    [textView release];

}

UILabel *firstLabel = (UILabel*)[cell viewWithTag:500];
UILabel *SecondLabel = (UILabel*)[cell viewWithTag:600];
UITextView *firstText = (UITextView*)[cell viewWithTag:700];

if (indexPath.row==0) 
{

    firstLabel.text=@"From Time";
[SecondLabel setHidden:Yes];
[firstText setHidden:Yes];

}

if (indexPath.row==1) 
{

    firstLabel.text=@"Sender";
[SecondLabel setHidden:NO];
[firstText setHidden:Yes];

}
if (indexPath.row==2) 
{
    firstLabel.text=@"Agenda";
[SecondLabel setHidden:Yes];
[firstText setHidden:NO]; 
}
return cell;
 }
于 2012-07-03T11:58:34.830 に答える
0

if (cell == nil) {セクション内にビューを追加するコードを移動します

たとえば、追加する場合UILabelは、次のようにします

UILabel *label;
if (cell == nil) {
    //create the cell
    //Create the label
    //Give the label a tag
    label.tag = 111; //for example
    //add label to the cell
    [cell.contentView addSubView:label];
}

//Now get the label of the cell
label = (UILabel*) [cell viewWithTag:111];

セルに追加するすべてのUILabelとその他のビューに対してこれを繰り返します

于 2012-07-03T11:50:28.680 に答える