Note courte: En général, il est de mauvais style d'avoir des déclarations "si" qui basculent sur un objet. Nous le faisons tous occasionnellement pour obtenir cette deuxième liste sans avoir besoin d'un nouveau contrôleur, mais basculer est ce que font les appels de méthode en interne, donc idéalement vous devriez laisser le ObjC s'occuper de faire ce qu'il faut. Plusieurs options:
-(void) tableViewSelectionDidChange: (NSTableView*)theView
{
SEL theAction = NSSelectorFromString( [NSString stringWithFormat: @"tableView%@SelectionDidChange:", [theView autosaveName]] );
[self performSelector: theAction withObject: theView];
}
-(void) tableViewUKSourceListSelectionDidChange: (NSTableView*)theView
{
// Choses spécifiques à la table UKSourceList ici.
}
-(void) tableViewUKUsersListSelectionDidChange: (NSTableView*)theView
{
// Choses spécifiques à la table UKUsersList ici.
}
Cela fonctionne mieux lorsque vous avez une étiquette de chaîne non localisée, comme le nom de sauvegarde automatique, mais vous pouvez aussi utiliser la balise, bien que cela rende le code moins lisible (lequel est "table 1"?). Parfois, il est préférable d'écrire simplement une sous-classe qui a une chaîne spéciale à cet effet, ou même des méthodes où vous pouvez spécifier des noms de sélecteur pour transférer les méthodes du délégué.
La suggestion de Caleb est également bonne, elle est également appelée "cible/action" au cas où vous souhaiteriez faire une recherche dessus. J'ai plusieurs classes (Mac) qui ont une "action" régulière pour les clics, une "doubleAction" pour les doubles clics, etc.