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.
NSIndexPath *selectedIndexPath = [tableView indexPathForSelectedRow];
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;
}
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
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
int a = indexPath.row;
NSLog(@"index: %i",a);
}
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
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]