获取UITableView的IndexPath以更改UIView的颜色

时间:2016-09-08 15:51:37

标签: ios objective-c uitableview uiview didselectrowatindexpath

我在tableViewCell左侧添加了徽章,如this example所示。 在成功完成之后,我转到了接下来的事情,即在单元格上添加向左/向右滑动并显示一些选项。我已经在GitHub上使用this library成功配置了它。

现在我向前移动时,我在右侧滑动添加了取消选项,用户点击它我想要那个徽章(UIView) )颜色变红。
我已将绿色添加为appointmentCell.appointmentStatusIndicatorBadge.layer.backgroundColor = [UIColor greenColor].CGColor;因此,如果我在didTriggerLeftUtilityButtonWithIndex中再次调用此行,则不会选择appointmentStatusIndicatorBadge,因为它是在PatientAppointmentTableViewCell中创建的@property (weak, nonatomic) IBOutlet UIView *appointmentStatusIndicatorBadge;并且它正在PatientViewController

中使用

以下是我需要访问它的完整方法:

- (void)swipeableTableViewCell:(SWTableViewCell *)cell didTriggerLeftUtilityButtonWithIndex:(NSInteger)index {
    switch (index) {
        case 0:
        {
            NSLog(@"Just Tapped Cancel");
//here I want to change the color to red
            [cell hideUtilityButtonsAnimated:YES];
            break;
        }
        default:
            break;
    }
}

我尝试通过创建类的新对象来做到这一点,但这是一个愚蠢的事情。现在问题是我无法跟踪indexPath,因为我不再位于TableView的委托方法中。那我怎么能这样做呢?


修改
根据评论,这是我的tableViewCell的.h代码。我没有在.h文件中做任何事情。

#import <UIKit/UIKit.h>
#import "SWTableViewCell.h"

@interface PatientAppointmentTableViewCell : SWTableViewCell
@property (weak, nonatomic) IBOutlet UIView *appointmentStatusIndicatorBadge;
@end

1 个答案:

答案 0 :(得分:1)

使用以下代码获取单元格的indexPath:

NSLog(@"Just Tapped Cancel");
NSIndexPath *indexPath = [tableView indexPathForCell:cell];

然而,cell是来自以下方法的cell

- (void)swipeableTableViewCell:(SWTableViewCell *)cell didTriggerLeftUtilityButtonWithIndex:(NSInteger)index 

方法