UITableViewCell内的UISegmentedControl自动返回到第一个段

时间:2015-11-26 23:42:03

标签: ios objective-c uitableview uisegmentedcontrol

我有一个带有标题部分的表视图,里面有一个分段控件。当我选择第二段时,在毫秒之后,它会自动返回到第一段。为什么呢?

我的代码:

-(UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    static NSString *CellIdentifier = @"Header";
    UITableViewCell *headerView = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (headerView == nil){
        [NSException raise:@"headerView == nil.." format:@"No cells with matching CellIdentifier loaded from your storyboard"];
    }
    UISegmentedControl *segmentedControl = (UISegmentedControl *)[headerView viewWithTag:123];
    [segmentedControl addTarget:self action:@selector(typeChanged:) forControlEvents:UIControlEventValueChanged];

    return headerView;
}


-(void)typeChanged:(id)sender{
    UISegmentedControl *segment=(UISegmentedControl*)sender;
    NSLog(@"index %li",(long)segment.selectedSegmentIndex);
}

由于

1 个答案:

答案 0 :(得分:0)

我建议不要用这种方式编写代码,有点像黑客代码 看看你的代码,当tableView刷新节头时,它调用函数,headerView不会是nil,因为tableView为你创建一个新的,显然它的选择是第一个段。