如何在iPhone中点击更改tableView单元格button

我有自定义单元格的表格视图,它有我想要的button,当用户单击该button,那么button的图像应该改变任何想法如何做到这一点,因为我希望cellImagebutton图像被改变在另一种方法。

[cell.theSyncButton addTarget:self action:@selector(syncButtonAction:) forControlEvents:UIControlEventTouchUpInside]; [cell.theSyncButton setTag:indexPath.row]; 

方法:

 -(IBAction)syncButtonAction:(id)sender{ // I want to change the cell.SyncButton image here } 

任何想法如何做到这一点。

而不是所有的代码,你所有你需要做的是:

  UIImage *img = [UIImage imageNamed:@"yourImage.png"]; [cell.theSyncButton setImage:img forState:UIControlStateSelected]; 
 [btnSync setImage:[UIImage imageNamed:@"refresh.png"] forState:UIControlStateNormal]; [btnSync setImage:[UIImage imageNamed:@"refresh-active.png"] forState:UIControlStateHighlighted]; 
 -(IBAction)syncButtonAction:(id)sender{ UIButton *btn = (UIButton *)sender; [btn setImage:img forState:UIControlStateSelected]; } 

尝试这个..

 -(IBAction)syncButtonAction:(id)sender { UIButton * syncButton = (UIButton *) sender; [syncButton setBackgroundImage: <NormalImage.png> forState: UIControlStateNormal]; [syncButton setBackgroundImage: <HighlightedImage.png forState: UIControlStateHighlighted]; } 

这里是我的解决scheme:我使用UIImageVIew作为button

例如,starIcon是一个UIImageView,我添加到我的自定义UITableViewCell作为button。 和ArticleCell是我自定义的UITableViewCell类。

在UITableView的dataSource方法cellForRowAtIndexPath

 ArticleCell* cell = [tableView dequeueReusableCellWithIdentifier:@"reused"]; if (cell==nil) { NSLog(@"init tableViewCell"); cell = [[ArticleCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"reused"]; UITapGestureRecognizer* gesture = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(buttonCallback:)]; gesture.numberOfTapsRequired=1; gesture.numberOfTouchesRequired=1; [cell.starIcon addGestureRecognizer:gesture]; cell.starIcon.userInteractionEnabled=YES; NSLog(@"init tableViewCell end"); } 

确保你设置了userInteractionEnabled == true;

那么,在你的buttonCallback方法中,你可以通过获取UIimageView

  -(void)buttonCallback:(UIGestureRecognizer*)gestureRecognizer{ UIImageView* star = (UIImageView*)[gestureRecognizer view]; } 

所以,你可以改变你的imageView。

 -(IBAction)syncButtonAction:(id)sender{ [button setImage:[UIImage imageNamed:@"yourimage.png"] forState:UIControlStateNormal]; }