如何在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]; }