2010-07-06 7 views
4

Je fais une application avec un UITableView qui a quelques sections (2), et quand je cours, la vue de table a cette barre d'index grise agaçante sur le côté, comme celle dans le "iPod "application, qui n'a que 2 options en elle. Ma question est, comment puis-je cacher la "barre d'index", parce que c'est un gaspillage inutile de l'espace?Supprimer Gray UITableView Index Bar

Exemple:
http://img824.imageshack.us/img824/7278/grayscrollbar.png

extraits de code:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    return [sections count]; 
} 

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView { 
    return sections; 
} 

// Customize the number of rows in the table view. 
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    if (section == 0) { 
     return 2; 
    } 
    return 1; 
} 
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { 
    return [sections objectAtIndex:section]; 
} 


// Customize the appearance of table view cells. 
- (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. 
    cell.textLabel.text = [content objectAtIndex:(indexPath.row + [[sectionAmounts objectAtIndex:indexPath.section] intValue])]; 
    tableView.showsVerticalScrollIndicator = NO; 
    return cell; 
} 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    content = [NSArray arrayWithObjects:@"Sphere", @"Cylinder", @"Circle", nil]; 
    sections = [NSArray arrayWithObjects:@"3d", @"2d", nil]; 
    sectionAmounts = [NSArray arrayWithObjects:[NSNumber numberWithInt:0], [NSNumber numberWithInt:2], nil]; //Second number is objects in first section... odd huh? 
    self.tableView.showsVerticalScrollIndicator = NO; 
    [content retain]; 
    [sections retain]; 
    // Uncomment the following line to display an Edit button in the navigation bar for this view controller. 
    // self.navigationItem.rightBarButtonItem = self.editButtonItem; 
} 

(MIND mes commentaires bizarres ...)

HiGuy

+0

Vous voulez vous débarrasser de l'indice de la section tout à fait ou tout simplement le « scrollbar »? – BoltClock

+0

La barre de défilement. –

Répondre

14

Ce "barre de défilement" est votre barre d'index , en supposant que vous parlez de la chose grise géante.

Retourne zéro à partir de sectionIndexTitlesForTableView: et ça va disparaître.

+0

Je vais être absent pendant un moment, mais quand je serai de retour, j'essaierai ça. ~ Via mon iPod touch –

+0

Merci! Réponse acceptée. –

15

J'ai essayé ceci, et cela n'a pas fonctionné pour moi. donc je suis allé à travers les propriétés de vue de la table, et a obtenu ceci.

self.tableView.showsVerticalScrollIndicator = NO; 

fonctionne comme un charme.

* pour ceux qui veulent le faire dans le futur.

+0

Ehm, ne fonctionne pas. Je ai essayé cela avec une vue de base de la table sur iOS 5.1 – Chris

+0

cela devrait fonctionner. tableview est une sous-classe de uiscrollview, et cette propriété fait partie de uiscrollview, et elle est toujours listée dans la référence de la classe. Je viens de le tester, et ça marche de mon côté. – abhi

+0

Fonctionne bien! Merci – doNotCheckMyBlog

0

J'ai eu un problème similaire, mais j'ai dû gérer mon en-tête/pied de page. Essentiellement, je juste enlevé les méthodes suivantes

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 
{ 
    return @" "; //@"Top"; 
} 

- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section 
{ 
    return @" "; //@"Bottom"; 
} 
0

Vous utilisez simplement le code ci-dessous et barre grise aller ....

tableViewBrowse.sectionIndexTrackingBackgroundColor = [UIColor clearColor]; 
0

utilisation sectionIndexBackgroundColor propriété de UITableView pour définir la couleur de la barre d'index pour effacer la couleur comme barre de défilement cachée va cacher aussi les index.

Ajoutez à votre viewDidLoad: comme suit:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    self.tableView.sectionIndexBackgroundColor = [UIColor clearColor]; //Replace it with your desired color 
}