2011-09-15 14 views
7

私はテーブルビューを持っており、そのtableHeaderViewにUISegmentedControlを添付しています。テーブルビューをスクロールしていても、同じ位置に常にUISegmentedControlを表示できるように、tableHeaderViewを固定する方法はありますか?スクロールしながらテーブルのtableHeaderViewの位置を固定することはできますか?

+0

可能な複製:http://stackoverflow.com/questions/7426849/can-not-freez-the-table-header-while-scrolling-the-rows/7427117#7427117 – msgambel

+0

私はビューコントロールでツールバーを使用しました。私のプロジェクトの一つに、そこにどんなオブジェクトを置いてもいい。 – user523234

答えて

7

tableView:ViewForHeaderInSection:は、あなたの仕事を達成するためのオプションです。プレーンテーブルでは、これは何とかセクションの名前の最初の文字を持つアドレスブックアプリケーションのように見えますが、セグメント化されたコントロールを持っています

+5

'tableView:viewForHeaderInSection:'は、UITableViewDelegateがセクションヘッダーのカスタムビューを返すことを許可しますが、これらのビュー*はテーブルの残りの部分がスクロールするとき*スクロールします。 –

+0

はい、連絡先アプリでそれぞれのセクションの上部でスクロールしています(そのセクションの行がテーブルビューの一番上にある場合は上部*のみに固執しています)。だから私はバデスクがセクションごとの固定ヘッダーかテーブル全体のための単一の固定ヘッダーを必要とするかどうかという疑問を抱いています。 tableHeaderViewを使用する試みに基づいて、私は後者を仮定しました。 (もちろん、2つのセクションは1つのセクションのみを持つテーブルと同等です...) –

+0

Basescuはセクションを一切必要としないことを理解していますので、プレーンテーブルの場合はテーブル内の全行。 –

1

私は、UISegmentedControlをtableHeaderViewではなくUITableViewの上に別のビューで配置することをお勧めします。また、テーブルの上部に移動したときにヘッダービューがバウンスしないように、yourTable.bounces = NO;を設定することもできます。

1

最初にテーブルビューのフレームを下げます(テーブルビューの上にスペースを入れます)。 scrollviewDidscrollの間に、tableviewheaderを正しく修正して、それとスクロールしません。

これは要約です。 @のmskwの答えに拡大すること

0

あなたはのUITableViewControllerを(例えばUIRefreshControlサポートとキーボードの回避など細かい点を保つ)を使用することができます。ツールバーをプレーンビューに埋め込んでtableHeaderViewに配置するだけです。次に、このスクロールビューデリゲートメソッドを実装してロックします。

#pragma mark - UIScrollViewDelegate 

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    CGRect rect = self.toolbarContainerView.frame; 
    rect.origin.y = MIN(0,scrollView.contentOffset.y + scrollView.contentInset.top); 
    self.toolbarContainerView.frame = rect; 
} 

注意あなたも、あなたがそうでなければ、彼らはtableHeaderViewにフローティング表示されますあなたのtableHeaderViewの背後にこれらのビューを送信する必要がありますセクションヘッダーを使用場合に。

関連する問題