60 votes

Sélectionner la première rangée par défaut dans UITableView

J'ai une application qui est basée sur la vue et j'ajoute une vue de table comme sous-vue à la vue principale. J'ai pris UITableViewDelegate pour répondre aux méthodes de la table. Tout fonctionne bien, mais je veux sélectionner la première rangée ou la première ligne. UITableView comme sélectionné par défaut (en surbrillance).

S'il vous plaît, aidez-moi, avec le code dont j'ai besoin et où je dois le mettre.

113voto

Zain Raza Points 556
- (void)viewDidAppear:(BOOL)animated {
    NSIndexPath *indexPath=[NSIndexPath indexPathForRow:0 inSection:0];
    [myTableView selectRowAtIndexPath:indexPath animated:YES  scrollPosition:UITableViewScrollPositionBottom];
}

La meilleure façon d'utiliser ceci dans votre code, si vous voulez sélectionner n'importe quelle ligne par défaut, utilisez dans viewDidAppear.

8voto

iosRider Points 2796
- (void)viewWillAppear:(BOOL)animated
    {

       [super viewWillAppear:animated];

     // assuming you had the table view wired to IBOutlet myTableView

        // and that you wanted to select the first item in the first section

        [myTableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:0];
    }

5voto

malcolmhall Points 1909
- (void)viewDidLoad
{
    [super viewDidLoad];
    self.detailViewController = (DetailViewController *)[[self.splitViewController.viewControllers lastObject] topViewController];

    if([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad){
        NSIndexPath* indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
        [self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionTop];
        [self tableView:self.tableView didSelectRowAtIndexPath:indexPath];
    }
}

1voto

Michael Morrison Points 839

Nous utilisons des images d'arrière-plan personnalisées pour la cellule selon qu'il s'agit ou non de la première cellule... d'une cellule centrale ou de la dernière cellule. De cette façon, nous obtenons un bel aspect de coin arrondi pour l'ensemble du tableau. Lorsque la ligne est sélectionnée, une jolie cellule "en surbrillance" apparaît pour indiquer à l'utilisateur qu'il a sélectionné une cellule.

UIImage *rowBackground;
UIImage *selectionBackground;
NSInteger sectionRows = [tableView numberOfRowsInSection:[indexPath section]];
NSInteger row = [indexPath row];

if (row == 0 && row == sectionRows - 1)
{
    rowBackground = [UIImage imageNamed:@"topAndBottomRow.png"];
    selectionBackground = [UIImage imageNamed:@"topAndBottomRowSelected.png"];
}
else if (row == 0)
{
    rowBackground = [UIImage imageNamed:@"topRow.png"];
    selectionBackground = [UIImage imageNamed:@"topRowSelected.png"];
}
else if (row == sectionRows - 1)
{
    rowBackground = [UIImage imageNamed:@"bottomRow.png"];
    selectionBackground = [UIImage imageNamed:@"bottomRowSelected.png"];
}
else
{
    rowBackground = [UIImage imageNamed:@"middleRow.png"];
    selectionBackground = [UIImage imageNamed:@"middleRowSelected.png"];
}

((UIImageView *)cell.backgroundView).image = rowBackground;
((UIImageView *)cell.selectedBackgroundView).image = selectionBackground;

Si vous le souhaitez, il suffit que la première cellule, celle qui se trouve à indexPath.row == 0, utilise un arrière-plan personnalisé.

Ceci est dérivé de l'article de Matt Gallagher. excellent site

-1voto

dombesz Points 5576

Vous pouvez faire comme ça :

- (void)viewDidLoad {
    [super viewDidLoad];
    NSIndexPath *ip=[NSIndexPath indexPathForRow:0 inSection:0];
    [myTableView selectRowAtIndexPath:ip animated:YES scrollPosition:UITableViewScrollPositionBottom];
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X