Objective c 在iOS7的SegmentController中选择了多段

Objective c 在iOS7的SegmentController中选择了多段,objective-c,ios7,uisegmentedcontrol,Objective C,Ios7,Uisegmentedcontrol,我在CellForRowatinex方法中添加了一个SegementController,以及我们之前选择的它的持续值。但一旦我们移动到另一个屏幕并返回当前屏幕,Segment将选择多个选项,如下所示: 这里已经选择了“是”,然后我选择了“否” 以下是我在CellForRowatineXpath中编写的代码: UISegmentedControl *seg = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObje

我在CellForRowatinex方法中添加了一个SegementController,以及我们之前选择的它的持续值。但一旦我们移动到另一个屏幕并返回当前屏幕,Segment将选择多个选项,如下所示:

这里已经选择了“是”,然后我选择了“否”

以下是我在CellForRowatineXpath中编写的代码:

   UISegmentedControl *seg = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Yes", @"No", @"Either", nil]];
   seg.frame = CGRectMake(190.0f, 10.0f, 205.0f, 30.0f);
   seg.selectedSegmentIndex = 0;
   [seg setTintColor:[UIColor orangeColor]];
   seg.segmentedControlStyle = UISegmentedControlStyleBar;
   [seg addTarget:self action:@selector(segSelected:) forControlEvents:UIControlEventValueChanged];
   seg.tag = indexPath.row;
   cell.textLabel.frame = CGRectMake(10, 5, 150, 30);
   [cell.contentView addSubview:seg];
   seg.selectedSegmentIndex = [[[arryaSegment objectAtIndex:indexPath.row]objectForKey:@"SelecteKey"] intValue];

这可能不是同时选择两个分段,而是同时添加两个分段控件,因为每次显示单元格时都会添加一个新控件

确保每个单元格只调用一次添加UISegmentedControl的代码

e、 g:

由于您不能再使用带segmentedControl标记的indexPath这种丑陋的方式,因此必须使用一种以不同方式获取indexPath的方法。大概是这样的:

- (IBAction)segSelected:(UISegmentedControl *)sender {
    CGPoint originOfSegmentedControlInTableView = [sender convertPoint:CGPointZero toView:self.tableView];
    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:originOfSegmentedControlInTableView];
    ...
}

我猜你没有正确地重复使用电池。将完整的CellForRow放入索引块
- (IBAction)segSelected:(UISegmentedControl *)sender {
    CGPoint originOfSegmentedControlInTableView = [sender convertPoint:CGPointZero toView:self.tableView];
    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:originOfSegmentedControlInTableView];
    ...
}