我有一个tableView,并且我有一个UISegmentController。所以每个单元格都有一个UISegmentController。
当用户点击UISegmentController(给定单元格)中的Segment时,我如何知道单击了哪个单元格?我需要NSLog该单元格的标题,我该怎么做(注意:用户只会点击单元格的UISegmentController ,而不是它自己的单元格)
以下代码是单击UISegmentController时将调用的方法;
-(void)segmentOfCellPressed:(id)sender{
}
答案 0 :(得分:2)
试试这个:
-(void)segmentOfCellPressed:(id)sender{
UISegmentController *segmentController = (UISegmentController *)sender;
YourCellClass *cell=(YourCellClass *)segmentController.superview.superview; // your clicked cell
// or a little bit more verbose but imho easier to understand:
// UIView *contentView = [segmentController superview];
// YourCellClass *cell = (YourCellClass *)[contentView superview];
NSIndexPath *path = [yourTableView indexPathForCell:cell]; //indexPath of clicked cell
}
答案 1 :(得分:1)
应该很容易。 UISegmentedController派生自UIControl,它派生出UIView。 UIView对象具有标记属性。创建每个UISegmentedControler时,请为每个UISegmentedControler指定唯一的标记值。您可能需要在字典中单独管理哪些标记值。
-(void)segmentOfCellPressed:(id)sender
{
UISegmentedController *segmentedController = (UISegmentedController *)sender;
UITableViewCell *cell = [self cellFromTag:segmentedController.tag];
}
您需要创建一个名为cellFromTag的方法,该方法将从UISegmentedController的标记值返回单元格。如果您不想要单元格而是其他东西,那么您可以返回它。
答案 2 :(得分:1)
您可以将段控制器的tag属性设置为cellForRowAtIndexPath中单元格的索引,然后在选择器中查询段控制器,然后通过标记获取单元格:
UISegmentController *segmentController = (UISegmentController*)sender;
int row = segmentController.tag;
希望这有帮助。
在cellForRowAtIndexPath方法中,将UISegmentController添加到单元格中,执行以下操作:
segment.tag = indexPath.row;