0

私のクラスの構造は仲間のようです

  • MainVC としましょう。
  • 4 つの異なるビュー コントローラー、たとえば vc1、vc2、vc3、および vc4。各 vc には独自の UITableView があります。
  • MainVC はこれらの VC をサブビューとして表示します。
  • UIView のサブクラス、たとえば headerVC は、VC の各テーブルにバナーとして表示する必要があるヘッダー ビューを返します。このビューには、MainVC の Vcs を切り替えるボタンが含まれています。

MainVC を実行すると、VC1 (tableView を持つ) のビューが読み込まれ、VC1 は tableView の最初の行に headerView を追加します。headerView で任意のボタンを押すと、MainVC は選択に従って VC を切り替えます。Eech VC は、その tableView の最初の行に headerView を追加します。

すべてうまく機能しますが、別のタブバー項目に移動して戻ってくると、選択した VC のテーブルから headerView が消えます。残りの行はそのまま表示されますが、ヘッダー ビューは消えます。tableView を上下にスクロールすると、headerView (最初の行) が再び表示されます。このように動作する理由がわかりません。

tableView のヘッダーとセクションのヘッダーの両方に headerView を配置しようとしましたが、まったく表示されませんでした。このアプローチにより、少なくともヘッダービューは表示され、正常に機能していますが、タブを変更して戻ってくると、最初の行 (ヘッダービューを含む) だけが消えます。

どんな手掛かり??

4

1 に答える 1

0

このヘッダービューをTableViewの行から削除し、静的ビューとしてVCに追加します.tableViewで移動したい場合は、このコードで実行できます

float scrollStartPositionY;
-(void) scrollViewDidScroll:(UIScrollView *)scrollView     {
    if (scrollView.contentOffset.y>=scrollStartPositionY)
        header.hidden=YES;
    else
        header.hidden=FALSE;

header.frame =CGRectMake(header.frame.origin.x,TableView.frame.origin.y TableView.contentOffset.y-    header.frame.size.height,   header.frame.size.width,header.frame.size.height) ;
}

-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
    scrollStartPositionY=scrollView.contentOffset.y+5;
}
于 2013-01-09T09:32:28.323 に答える