2010-08-05 21 views
3

Je suis un peu perplexe quant à la façon d'instruire un NSSegmentedControl créé par programme pour utiliser une instance de sous-classe d'un NSSegmentedCell.Définition par programme NSSegmentedCell

Si je veux utiliser un sous-classes NSSegmentedCell sur un NSSegmentedControl construit en utilisant IB, il serait aussi simple que de faire ce qui suit:

  1. Faites glisser un NSSegmentedControl dans le NSView
  2. Cliquez jusqu'à la NSSegmentedCell
  3. Dans l'inspecteur, affectez la définition de classe à la sous-classe (par exemple, myCustomCell)

Travail terminé.

Cependant, lors de la création d'un programme NSSegmentedControl comme dans l'exemple simplifié suivant, je ne vois pas comment la sous-classe la cellule ...

-(void)creatSegmentControl { 

    if (!mySegmentControl) 
     mySegmentControl = [[NSSegmentedControl alloc] 
           initWithFrame:NSMakeRect(0,0 400,20)]; 

    [mySegmentControl setSegmentCount:2]; 
    [mySegmentControl setLabel:@"First" forSegment:0]; 
    [mySegmentControl setLabel:@"Second" forSegment:0]; 
    [mySegmentControl setTarget:self]; 
    [mySegmentControl setAction:@selector(segmentClicked:)]; 
} 

NSSegmentedControl ne semble pas avoir une méthode pour définir la classe à utiliser pour ses instances de cellule de segment.

Comme d'habitude, toute aide est appréciée.

Mise à jour

Essayé la mise en œuvre [mySegmentControl setCellClass:[myCustomCell class] mais cela ne fonctionne pas non plus. Je pensais que peut-être il a hérité de la possibilité de définir sa classe de cellules comme les autres contrôles AppKit. :-(

Cela doit être possible si ... en quelque sorte ...

+0

La documentation du SDK est peu d'aide ici. Peut-être la solution est de charger votre contrôle segmenté d'une plume qui contient juste le contrôle? –

+0

@Seamus, merci pour la réponse rapide.Je pourrais le mettre dans un NIB, mais j'ai déjà beaucoup de fichiers nib dans mon application, donc je suis un peu hésité à ajouter des NIB juste pour une sous-classe Vous avez raison, les docs offrent peu ou pas d'aide dans ce domaine. – Hooligancat

Répondre

0

un peu tard, mais il ne remplace pas le travail de cellClass?

+ (Class)cellClass 
{ 
    return [YourCustomCellClass class]; 
}