Ios UITableViewController中UITableViewCells之间的通信

Ios UITableViewController中UITableViewCells之间的通信,ios,uibutton,communication,uitableview,Ios,Uibutton,Communication,Uitableview,我知道这是一个常见的问题。然而,经过广泛的搜索,我还没有找到答案,所以我在这里问 我有一个UITableViewController,其中每一行都是UITableViewCell子类的实例。每个UITableViewCell子类都有一个UIButton。最初,所有UIButton都有相同的图像,只是一个蓝色的圆圈。点击按钮只会使该按钮的图像变为红色圆圈。这一部分很简单:只需在UITableViewCell子类中处理点击并切换图像 这里有一个挑战性的部分:当我点击另一个蓝色按钮时,我希望当前为红色

我知道这是一个常见的问题。然而,经过广泛的搜索,我还没有找到答案,所以我在这里问

我有一个UITableViewController,其中每一行都是UITableViewCell子类的实例。每个UITableViewCell子类都有一个UIButton。最初,所有UIButton都有相同的图像,只是一个蓝色的圆圈。点击按钮只会使该按钮的图像变为红色圆圈。这一部分很简单:只需在UITableViewCell子类中处理点击并切换图像

这里有一个挑战性的部分:当我点击另一个蓝色按钮时,我希望当前为红色的按钮(如果有的话)将其图像切换回蓝色。我如何告诉此按钮切换其图像

在哪里可以跟踪当前为红色的按钮?

在UITableViewCell子类中实现-voidsetSelected:BOOLselected animated:BOOLanimated方法。选择单元格时,使UIButton图像为红色;否则,将UIButton图像设置为蓝色。每当选择新单元格时,就会调用此方法,因此始终只有一个红色按钮单元格

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
    if(selected)
    {
        [myButton setImage:RED_IMAGE forState:UIControlStateNormal]; //or however else you want to change your button's image
    }else
    {
        [myButton setImage:BLUE_IMAGE forState:UIControlStateNormal];
    }

    [super setSelected:selected animated:animated];
}

试过这个,效果不太好。回想一下,我正在点击每个UITableViewCell子类中的按钮,而不是UITableViewCell本身。对不起,我很困惑,为什么要使用按钮?没问题:-由于应用程序的设计,UITableViewCell子类有一个按钮。所以点击一个单元格做一件事,而点击单元格中的按钮做另一件事。好的,然后你可以实现一个静态类,它保持一个指向当前选中按钮的指针。当按下一个新按钮时,告诉旧按钮静态类持有的按钮更改其图像。完成后,将静态类中的指针设置为当前选定的新按钮。