web-dev-qa-db-fra.com

iOS, Comment trouver la ligne sélectionnée de UITableView?

J'essaie de trouver UITableViewCell sélectionné comme suit:

 - (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];

  }
    if   ([indexPath row] == [tableView cellForRowAtIndexPath:indexPath.row]) // i want to place value of selected row to populate the buttons 

        //([indexPath row] == 0)

        //(indexPath.row == ![self cellIsSelected:indexPath]) 

    {
        UIButton *AddComment = [UIButton buttonWithType:UIButtonTypeCustom]; // custom means transparent it takes shape same with backgroup image

        [AddComment addTarget:self 
                       action:@selector(TestBtns:)
             forControlEvents:UIControlEventTouchDown];

        // [AddComment setTitle:@"1" forState:UIControlStateNormal];

        AddComment.frame = CGRectMake(9.0, 128.0, 96.0, 26.0);

        [cell.contentView addSubview:AddComment];

        UIImage *buttonAddComment = [UIImage imageNamed:@"addcomment.png"];

        [AddComment setBackgroundImage:buttonAddComment forState:UIControlStateNormal];

        [cell.contentView addSubview:AddComment]; 


    }

Comment y parvenir, pouvez-vous s'il vous plaît me guider, où je fais erreur.

27
NSIndexPath *selectedIndexPath = [tableView indexPathForSelectedRow];
105
Suraj K Thomas

Utilisez cette méthode délégué de UITableView

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
   NSLog(@"%d", indexPath.row); // you can see selected row number in your console;
}
16
iPatel

dans le délégué UITableViewDataSource, il existe une méthode - ((void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath.

Il renvoie l'objet NSIndexPath qui contient à la fois la section et la ligne sélectionnées.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    NSLog(@"Selected section>> %d",indexPath.section);
    NSLog(@"Selected row of section >> %d",indexPath.row);
}

assurez-vous de définir la source de données de tableview avant de l'utiliser sinon cette méthode ne sera pas appelée

6
Vaibhav Gautam
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    int a = indexPath.row;
    NSLog(@"index: %i",a);
}
2
Russius Mamardage

Voici la méthode intégrée qui vous aidera à déterminer quelle cellule a été sélectionnée.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // you can use "indexPath" to know what cell has been selected as the following
    NSLog(@"Selected row is %@", indexPath);
}

et par la façon dont la méthode est déjà donnée lorsque vous créez TableViewController, il vous suffit probablement de la décommenter.

J'espère que vous le trouverez utile

1
CodeLover

Je pense que ce que vous essayez de faire n'est pas de cliquer sur l'index de la cellule de vue de table mais de savoir sur quelle cellule est cliqué.

Pour le savoir au moment d'affecter chaque cellule, attribuez la valeur indexpath.row comme balise de la cellule créée, puis cliquez sur prendre la vue de la table en tant que parent et essayez d'obtenir sa sous-vue (cellule) avec cette balise

[Vue Tableview avec la balise: indexpath.row]

0
Mini