将分段控件插入标题视图时出现问题

时间:2010-04-27 05:35:27

标签: iphone

我正在尝试在tableview中添加UISegmentedControl。我的tableview中有两个部分,我希望将分段控件放在第二部分中。在我的实现中,我重写viewForHeaderInSection如下。

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {

if (section == 1)
{   
    UIView *headerView = [[[UIView alloc] initWithFrame:CGRectMake(10, 0,tableView.bounds.size.width, 10)] autorelease];
    NSArray *segmentTextContent = [NSArray arrayWithObjects:NSLocalizedString(@"Singles", @""), NSLocalizedString(@"Everyone", @""),nil];
    UISegmentedControl *segmentedControl = [[[UISegmentedControl alloc] initWithItems:segmentTextContent] autorelease];
    segmentedControl.selectedSegmentIndex = 1;
    segmentedControl.autoresizingMask = UIViewAutoresizingFlexibleWidth;
    segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
    segmentedControl.frame = CGRectMake(0, 0, tableView.bounds.size.width+10, 20);
    [segmentedControl addTarget:self action:@selector(loadTable:) forControlEvents:UIControlEventValueChanged];
    [headerView addSubview:segmentedControl]; 
    return headerView;
}
else
{
    UIView *headerView = [[[UIView alloc] initWithFrame:CGRectMake(10, 0,tableView.bounds.size.width, 10)] autorelease];
    return headerView;
}

}

我的问题是,一旦我选择了特定的细分,它似乎就不会被选中。即它没有像预期的那样变暗。我之前已将分段控件放在导航栏中,并按预期选择后对段进行着色。

任何帮助都将受到高度赞赏。 感谢

2 个答案:

答案 0 :(得分:1)

这是一个迟到的反应,但我遇到了同样的问题,并找出了问题所在。在上面的代码中,每次tableView调用reloadData时都会重新创建headerView(在我基于segmentedControl的点击来获取数据之后发生),因此分段控件返回到其原始状态,并且触摸显然不是反射。

为了解决这个问题,我将segmentedControl设为ivar,并检查它是否已经存在。如果是这样,那么只需致电

[headerView addSubview: segmentedControl];

否则执行控件的整个设置。

希望这有帮助。

答案 1 :(得分:0)

你有没有找到答案?我实现了几乎相同的东西,它工作得很好。我的猜测是你控制的大小比视图的边界大。

CGRectMake(0, 0, tableView.bounds.size.width+10, 20)

我相信这会导致控件在所有情况下都不会接收触摸事件。