2011-01-11 6 views
0
static NSString *CellIdentifier = @"Cell"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@""]; 
if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault  reuseIdentifier:CellIdentifier] autorelease]; 
} 
//cell.backgroundView = [[[CustomCell alloc] init] autorelease]; 
cell.selectedBackgroundView = [[[CustomCell alloc] init] autorelease]; 

// At end of function, right before return cell: 
cell.textLabel.backgroundColor = [UIColor clearColor]; 


// Configure the cell. 
UILabel *myLabel1 = [[UILabel alloc] initWithFrame:CGRectMake(-30, 3, 300, 22)]; 
UILabel *myLabel2 = [[UILabel alloc] initWithFrame:CGRectMake(10, 22, 310, 200)]; 
UILabel *myLabel3 = [[UILabel alloc] initWithFrame:CGRectMake(0, 170, 300, 20)]; 

Book *aBook = [appDelegate.books objectAtIndex:indexPath.row]; 


    myLabel1.text=aBook.title; 
    myLabel2.text=aBook.description; 
    myLabel3.text=aBook.pubDate; 

    NSString *desc = aBook.description; 
    if ([desc isEqualToString:nil]) { 
     NSLog(@"nullll lll "); 
    } 


//myLabel2.textAlignment=UITextAlignmentCenter;    
myLabel2.numberOfLines=5; 
myLabel2.textColor=[UIColor blueColor]; 
myLabel2.lineBreakMode=UILineBreakModeWordWrap; 
myLabel2.font=[UIFont systemFontOfSize:14]; 
myLabel3.numberOfLines=1; 
myLabel1.numberOfLines=1; 
myLabel1.textColor=[UIColor redColor]; 
myLabel1.font=[UIFont systemFontOfSize:20]; 
myLabel1.shadowColor=[UIColor redColor]; 
myLabel1.backgroundColor=[UIColor grayColor]; 
     [cell.contentView addSubview:myLabel1]; 
     [cell.contentView addSubview:myLabel2]; 
     [cell.contentView addSubview:myLabel3]; 

salut les gars! J'ai ce code suivant, je veux l'afficher à partir du fichier XML. maintenant son travail mais la hauteur de la rangée statique. si le fichier xml ne contient pas de données, il le laisse vide. donc je veux changer la hauteur de ligne en fonction des données que je fournis en utilisant la mylabel1,2,3.texthauteur de ligne dynamique

Répondre

0

Si je comprends la aright question (et excuses si je ne le fais pas), puis:

  1. Mettre en œuvre la tableView: heightForRowAtIndexPath: méthode dans votre délégué tableView - obtenir pour calculer et retourner une hauteur appropriée pour la ligne;
  2. Configurez les tailles (ou supprimez simplement de la vue d'ensemble) les UILabelView que vous ajoutez à contentView. Vous faites cela en tableView: cellForRowAtIndexPath:
  3. Assurez-vous de recharger la table ou, mieux, recharger uniquement les lignes qui ont changé - cela force le tableView chercher la hauteur à nouveau

Voici un exemple d'un tableView : méthode heightForRowAtIndexPath pour une seule table de section qui redimensionne dynamiquement la hauteur de la ligne de cellule en fonction de la quantité de texte présente dans le paragraphe affiché.

- (CGFloat) tableView: tableView heightForRowAtIndexPath: indexPath; 
{ 
    CGFloat rowHeight = [self rowHeight:[[self paragraphs] objectAtIndex: [indexPath row]]; 
    return (rowHeight + EI_CELL_MARGIN); 
} 

Et puis un fragment de la méthode tableView: cellForRowAtIndexPath:.

NSString* cellText = [[self paragraphs] objectAtIndex: [indexPath row]; 
[[cell paragraphController] setText: cellText]; 
[[cell paragraphController] adjustFrameToTextSize]; 

(Comme il va dans ce code, je l'ai sous-classé UITableViewCell pour plus de commodité. Le « paragraphController » est juste un ViewController en vue ajouté à afficher le contenu de la cellule. La méthode adjustFrameToTextSize remet à zéro le cadre de la vue en fonction de la taille du contenu à afficher.)

2

Comme il est précisé dans le protocole UITableViewDelegate, vous souhaitez implémenter la méthode tableView:heightForRowAtIndexPath: dans votre délégué. Dans cette méthode, on vous donne l'indexPath, vous pouvez répéter la ligne

Book *aBook = [appDelegate.books objectAtIndex:indexPath.row];

Une fois que vous avez le livre, vous pouvez vérifier ses propriétés (qui ressemble à title, description et pubDate), puis au lieu d'ajouter à la cellule (ce que vous faites plus tard), vous renvoyez une hauteur de cellule calculée en fonction des valeurs de propriété.

+0

pls laissez-nous un certain niveau de base. Je suis un novice à l'iphone, je n'ai pas été désolé – Splendid

1

Salut Il y a une solution à essayer la méthode de NSString. écrivez ceci est la taille pour la cellule

NSString *text1 = [arrOutline1 objectAtIndex:[indexPath row]]; 

CGSize constraint1 = CGSizeMake(CELL_CONTENT_WIDTH , 20000.0f); 
CGSize size1 = [text1 sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint1 lineBreakMode:UILineBreakModeWordWrap]; 
CGFloat YPostion =MAX(size3.height, 44.0f); 

cellHeight = cellHeight + YPostion + 20;; 

return cellHeight ;