1

テーブルビュー コントローラーにカスタム セグメント コントロールがあり、テーブルビューのヘッダーに検索バーがあります。最後のセルまでスクロールすると、テーブルビューが跳ね返ります。しかし、問題は次のとおりです。検索バーがセグメント化されたコントロールの後ろに隠れて、ビューの下部に空白が表示されます。ユーザーがテーブルビューを上にスクロールすると、最初のスクリーンショットに示すように、バウンスして前の位置に戻るようにしたいと考えています。

これが私のセグメント化されたコントロールのコードです:

self.projectSegmentControl = [[UISegmentedControl alloc]initWithItems:[NSArray arrayWithObjects:@"Active Projects", @"All Projects", nil]];
    [self.projectSegmentControl addTarget:self action:@selector(actionSelectProject) forControlEvents:UIControlEventValueChanged];
    CGRect screenRect = [[UIScreen mainScreen] bounds];
    CGFloat screenWidth = screenRect.size.width -20;
    self.projectSegmentControl.frame = CGRectMake([UIScreen mainScreen].bounds.size.width-screenWidth-5,10, screenWidth, 30.0);
    _segmentControlView = [[UIView alloc] initWithFrame: CGRectMake(0,60, screenRect.size.width,47.0)];
    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    _segmentControlView.backgroundColor = [UIColor whiteColor];
    self.projectSegmentControl.backgroundColor = [UIColor whiteColor];
    [_segmentControlView addSubview:self.projectSegmentControl];
    [appDelegate.window addSubview:_segmentControlView];
    self.projectSegmentControl.selectedSegmentIndex = 0;
    CGFloat screenHeight = screenRect.size.height;
    if(screenHeight==480 || screenHeight==568)
    {
        CGPoint newOffset = CGPointMake(0, -[self.tableView  contentInset].top);
        [self.tableView setContentOffset:newOffset animated:YES];
    }

    UIFont *font = [UIFont fontWithName:@"Avenir" size:12.0f];
    NSDictionary *attributes = [NSDictionary dictionaryWithObject:font forKey:NSFontAttributeName];
    [_projectSegmentControl setTitleTextAttributes:attributes forState:UIControlStateNormal];

tableview が表示されたときのスクリーンショットです。 ここに画像の説明を入力

テーブルビューを上にスクロールすると跳ね返りますが、検索バーはセグメント化されたコントロールの後ろに隠れています。

ここに画像の説明を入力

PS: 必要に応じてコードを追加します。前もって感謝します

4

1 に答える 1

0

上記の投稿では、使用していると想定しています

UITableViewController(ないUIViewController)

テーブルビューのヘッダーに検索バーを追加しました。

次に、プログラムでセグメント化されたコントローラーを作成し、ウィンドウに追加しました

 CGRect screenRect = [[UIScreen mainScreen] bounds];
    CGFloat screenWidth = screenRect.size.width -20;
    self.projectSegmentControl.frame = CGRectMake([UIScreen mainScreen].bounds.size.width-screenWidth-5,10, screenWidth, 30.0);
    _segmentControlView = [[UIView alloc] initWithFrame: CGRectMake(0,60, screenRect.size.width,47.0)];
    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

したがって、テーブルをスクロールしている間、明らかにヘッダーも一緒に移動します。そのため、セグメント化されたコントロールの後ろに隠れています。

解決

ステップ 1. uiviewcontroller を作成します (uitableviewcontroller ではありません)
ステップ 2. ビューにセグメント化されたコントロールを追加します
ステップ 3. セグメント化されたコントロールの下に静的検索バーを追加します。ステップ4.テーブルビューをスクロールしている間、セグメント化されたコントロールは非表示になりません

これがあなたを助けることを願っています。

于 2016-05-21T10:43:07.987 に答える