2010-05-14 8 views
2

Peu d'arrière-plan, la vue de table est remplie par un fetchedResultsController qui remplit la vue tabulaire avec des chaînes. Maintenant, j'essaie d'ajouter un bouton à côté de chaque chaîne dans chaque cellule de table. Jusqu'à présent, j'ai essayé de créer un bouton dans ma méthode configureCell: atIndexPath, puis d'ajouter ce bouton en tant que sous-vue à la vue de contenu de la cellule du tableau, mais pour une raison quelconque, les boutons n'apparaissent pas. Voici le code pertinent. Si quelqu'un veut plus de code posté, il suffit de demander et je vais mettre en place ce que vous voulez. Toute aide est grandement appréciée.Question iPhone: Comment puis-je ajouter un bouton à une cellule tablevue?

- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath { 

// get object that has the string that will be put in the table cell 
Task *task = [fetchedResultsController objectAtIndexPath:indexPath]; 

//make button 
UIButton *button = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain]; 
[button setTitle:@"Check" forState:UIControlStateNormal]; 
[button setTitle:@"Checked" forState:UIControlStateHighlighted]; 

//set the table cell text equal to the object's property 
cell.textLabel.text = [task taskName]; 

//addbutton as a subview 
[cell.contentView addSubview:button]; 
} 

- (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]; 
    } 

// Configure the cell. 
[self configureCell:cell atIndexPath:indexPath]; 
    return cell; 
} 

Répondre

2

Trois commentaires:

  1. Vous aurez probablement besoin de définir le cadre de votre UIButton. Sinon, il ne sait pas comment il est censé être et où il est censé être placé. Il est possible qu'il soit livré avec un cadre par défaut, mais je n'ai pas étudié cela.
  2. Vous avez des fuites de boutons. Vous n'avez pas besoin de retain après avoir appelé [UIButton buttonWithType:...];
  3. Vous avez la possibilité d'ajouter plusieurs boutons à la même cellule. Si vous réutilisez une cellule, vous devez d'abord appeler removeFromSuperview chaque sous-vue de cell.contentView.
+0

Merci pour la réponse, j'ai changé le [UIButton buttonWithType] à CGRect buttonFrame = CGRectMake (0, 0, 40, 40); UIButton * button = [[UIButton alloc] initWithFrame: buttonFrame]; mais rien ne s'affiche. Pensez-vous qu'il pourrait être obscurci par quelque chose? Éditer: C'est obscurci, je peux voir du texte sous l'autre texte de chaîne. Maintenant j'ai juste besoin de le déplacer. Merci beaucoup pour votre aide. – Jake

+0

'+ buttonWithType:' est l'initialiseur approprié pour 'UIButtons'. Vous avez juste besoin de faire quelque chose comme: '[button setFrame: CGRectMake (0,0,40,40)];' après –