2010-11-26 22 views
1

afin d'obtenir la hauteur nécessaire d'une cellule, je mis en œuvre une fonction commeUITableView vérifier si l'indice est montré

+(CGFloat)rowHeightForTableView:(UITableView*)tableView andObject:(NSObject*)theObject {...} 

dans les cellules.

Étant donné que tableView est l'un des paramètres, je peux vérifier s'il s'agit d'une table de style simple ou groupée et inclure la largeur résultante dans mes calculs. Mais comment dois-je vérifier si un index est affiché?

Répondre

2

Vous pouvez vérifier si l'affichage du tableau de la source de données répond au sélecteur sectionIndexTitlesForTableView: (qui une source de données doit mettre en œuvre pour une vue de tableau indexé):

if ([tableView.dataSource 
     respondsToSelector:@selector(sectionIndexTitlesForTableView:)]) 
{ 
    NSArray *result = 
      [tableView.dataSource sectionIndexTitlesForTableView:tableView]; 
    if (result != nil) 
     NSLog(@"tableView is currently indexed"); 
    else 
     NSLog(@"tableView is not currently indexed"); 
} 
else 
    NSLog(@"tableView does not implement indexing"); 

Si la source de données répond à ce sélecteur, en fait appeler et vérifier le résultat tient compte de la possibilité que la vue de table retourne actuellement zéro de cette méthode parce qu'elle ne veut pas montrer l'index pour n'importe quelle raison ou si la source de données manipule plusieurs vues de table (dont certaines sont indexées et certaines qui sont aren t).