This is probably not about selecting 2 segments at the same time, but adding two segmentedControls at the same time because you add a new control each time the cell is displayed.
Make sure the code that adds the UISegmentedControl is only called once per cell.
e.g:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell; // = ... dequeue ...
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
// add segmented control only when creating a new cell
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];
cell.textLabel.frame = CGRectMake(10, 5, 150, 30);
[cell.contentView addSubview:seg];
seg.tag = 42; // used to reference segmentedControl in dequeued cell. see next line
}
UISegmentedControl *seg = (UISegmentedControl *)[cell.contentView viewWithTag:42];
seg.selectedSegmentIndex = [[[arryaSegment objectAtIndex:indexPath.row]objectForKey:@"SelecteKey"] intValue];
return cell;
}
since you can't use the ugly way of getting the indexPath with the tag of the segmentedControl anymore, you have to use a method which gets the indexPath in a different way. Something like this:
- (IBAction)segSelected:(UISegmentedControl *)sender {
CGPoint originOfSegmentedControlInTableView = [sender convertPoint:CGPointZero toView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:originOfSegmentedControlInTableView];
...
}