2010-04-16 5 views
0

Ceci est mon programmeComment faire pour définir la hauteur de la cellule progamatically sans utiliser le fichier nib?

- (void)viewDidLoad { 
    [super viewDidLoad]; 

// Uncomment the following line to display an Edit button in the navigation bar for this view controller. 
    self.title = @"Library"; 
    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Close" style:UIBarButtonItemStyleBordered target:self action:@selector(close:)]; 
    // self.tableView.rowHeight = 80; 
    } 

-(void)close:(id)sender 
{ 
// 
} 


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

static NSString *CellIdentifier = @"Cell"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) 
{ cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; 

    UILabel *dateLabel = [[UILabel alloc]init]; 
    dateLabel.frame = CGRectMake(85.0f, 6.0f, 200.0f, 20.0f); 
    dateLabel.tag = tag1; 
    [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator]; 
    cell.contentView.frame = CGRectMake(0.0f, 0.0f, 320.0f, 80.0f); 
    [cell.contentView addSubview:dateLabel]; 
    [dateLabel release]; 
} 

// Set up the cell... 
//[(UILabel *)[cell viewWithTag:tag1] setText:@"Date"]; 
cell.textLabel.text = @"Date"; 

return cell; 
} 

Je suis en train de la taille du cadre de la cellule dans tableView mais la cellule est en taille par défaut uniquement. Je veux dire que la hauteur que j'avais fixée était de 80 mais elle n'était pas fixée à 80 en hauteur. Comment puis-je le faire.

Merci Vous

Répondre

1

Utilisez self.tableView.rowHeight = 80.0;, ou si cela ne fonctionne pas (cela dépend de la configuration de votre vue de table), utilisez la méthode -[UITableViewDelegate tableView:heightForRowAtIndexPath:] si vous souhaitez des hauteurs de ligne différentes pour différentes cellules.

par exemple. mettre ceci dans n'importe quel objet est votre UITableViewDelegate (probablement le même fichier que ci-dessus).

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (someConditionBasedOnIndexPath) return 60.0; 
    return 80.0; 
} 
+0

Merci. Cela a fonctionné. J'ai utilisé - [UITableViewDelegate tableView: heightForRowAtIndexPath:] –

1

tableView:cellForRowAtIndexPath: est appelée que si tableView:numberOfRowsInSection: retourne une valeur positive. Votre code semble correct, bien que vous ne deviez pas définir le cadre de contentView.

+0

Je dois ajouter une image et 6 étiquettes dans chaque cellule. Donc, j'utilise le cadre défini. Je vous remercie. –

+0

Je pense que les cadres cell et contentView sont automatiquement dimensionnés par la vue table en fonction de la largeur rowHeight et de la table. – drawnonward

Questions connexes