0

UITableView のヘッダービューに UISegmentedControl があります。何らかの理由で、セグメントを選択できません。いつでも、配列の最後のセグメントが自動的に選択され、それ以外は選択できません。アクションを削除すると、どちらかを選択できます。何が起こっているのかわかりません。

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

    if (section == 1) {

        UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0,0, 320, 40)]; // x,y,width,height

        NSArray *itemArray = [NSArray arrayWithObjects:@"E01", @"E02", @"E03", @"E05", @"E06", @"T05", @"E17", @"E19", nil];
        control = [[UISegmentedControl alloc] initWithItems:itemArray];
        [control setFrame:CGRectMake(30.0, 0, (tableView.bounds.size.width) - 60, 40)];
        [control setSelected:YES];
        [control setSegmentedControlStyle:UISegmentedControlStylePlain];
        [control addTarget:self action:@selector(unitSegmentControl:) forControlEvents:UIControlEventValueChanged];

        [headerView addSubview:control];

        return headerView;
    }

    return nil;
}
4

1 に答える 1

0

UISegmentedControl で setSelected を呼び出すとどうなるかはわかりませんが、次を使用することをお勧めします。

control.selectedSegmentIndex = anNSInteger;

をクリックして、最初に選択したセグメントを設定します。私はそれがあなたの問題だとは思わない。

スクロール テーブル ビューを使用している場合は、他に考慮すべきことがあります。

viewForHeaderInSection

ヘッダーが画面にスクロールされるたびにそのセクションに対して呼び出されます。つまり、ヘッダーが画面にスクロールされるたびにセグメント化されたコントロールが再初期化され、選択したインデックスが失われます。

それ以外は、 unitSegmentControl セレクターのコードを投稿できます。おそらく、テーブル ビューがリロードされ、viewForHeaderInSection が再度呼び出され、セグメント化されたコントローラーが再初期化されている可能性があります。

于 2012-12-21T19:01:20.217 に答える