J'ai un bouton et une table. Maintenant, je veux cliquer de telle manière que chaque fois que je sélectionne une ligne dans tableview
et que j'appuie sur le bouton, cet événement de pression de bouton particulier se produise. Pour cela, j'ai d'abord donner une étiquette à chaque ligne, c'est-à-dire
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *LabelCellIdentifier = @"cell";
UITableViewCell *cell;
cell = [tableView dequeueReusableCellWithIdentifier:LabelCellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:LabelCellIdentifier];
}
if (indexPath.row <= [_arrayMp3Link count]) {
cell.textLabel.text = [_arrayMp3Link objectAtIndex:indexPath.row];
}
// now tag each row
NSInteger count = 1;
for (NSInteger i = 0; i < indexPath.section; i++) {
count += [[tableView dataSource] tableView:tableView numberOfRowsInSection:i];
}
count += indexPath.row;
// dequeue, create and configure...
cell.tag = count;
return cell;
}
et maintenant en mettant l'événement dans le bouton lorsque je sélectionne la ligne et appuie sur mon bouton. Mais ne pas obtenir les bonnes choses.
(IBAction)doDownload:(id)sender {
// to select first row
if(cell.tag==1)
{
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"http://www.google.com"]];
}
Déclarez une variable int
globalement -
int rowNo;
Attribuez-lui ensuite une valeur dans didSelectRowAtIndexPath:
méthode
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
rowNo = indexPath.row;
}
Vous avez maintenant l'indexNo. de la ligne sélectionnée.
-(IBAction)doDownload:(id)sender
{
//Now compare this variable with 0 because first row index is 0.
if(rowNo == 0)
{
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"http://www.google.com"]];
}
}
Vous devez utiliser la fonction didSelectRowAtIndexPath de tableView.
dans cette méthode, vous enregistrez la balise de ligne sélectionnée ou tout ce que vous souhaitez enregistrer.et dans l'action du bouton, vérifiez la valeur de l'entité enregistrée et faites n'importe quoi.
Utilisez la fonction de source de données de UITableView qui est
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{}
quel indexPath.row est l'index de chaque ligne.
'the-interview-2.jpg' est le nom d'un fichier image
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
ViewController *vc = [sb instantiateViewControllerWithIdentifier:@"viewc"];
[self.navigationController pushViewController:vc animated:YES];
[vc setImageName:@"the-interview-2.jpg"];
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if(indexPath.row==i)
{//Perform whatever action you would like for whichever row number..i'm just using i as an int placeholder
[[UIApplication sharedApplication]openURL:[NSURLWithString:@"http://www.google.com"]];
}
//Or you could perform the same action for all rows in a section
if(indexPath.section==i)
{
[[UIApplication sharedApplication]openURL:[NSURLURLWithString:@"http://www.google.com"]];
}
//use selectedrow to check the condition
-(void)tableView:(UITableView *)tableview didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
selectedrow=indexPath.row;
}
-(IBAction)doDownload:(id)sender {
// to select first row
if(selectedrow==1)
{
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"http://www.google.com"]];
}