0

UITableView と小さなカスタム ビューがあります。カスタムをナビゲーションバーの下にとどめたいが、テーブルビューの上に置いておきたい。そのため、カスタム ビューが上下に移動すると、ナビゲーション バーの奥からカスタム ビューが飛び出しているように見えます。

最初に、カスタムビューをテーブルビューのサブビューにすると、すべて問題ないようです。しかし、テーブルビューがスクロールされると、カスタムビューの位置も変更されます。これは私が望むものではありません。

次に、ナビゲーション バーをスーパービューにしましたが、カスタム ビューはナビゲーション バーの上にとどまります。親ビューとサブビューの間で z オーダーを変更する方法がわかりません。

では、誰かアドバイスをいただけないでしょうか?

ありがとうございました!

4

1 に答える 1

5

ビュー階層の作成方法に応じて、テーブル ビューの上または以下のナビゲーション バーに挿入します。

- (void)viewDidLoad
    [super viewDidLoad];
    // let's assume self.tableView is table view
    // and self.navigationBar is navigation bar
    // that both are subviews of [self view]
    UIView *customSubview = [[UIView alloc] initWithFrame:someRect];

    [[self view] insertSubview:customSubview aboveSubview:[self tableView]];
    // -- OR --
    [[self view] insertSubview:customSubview belowSubview:[self navigationBar]];
}

サブビューを特定のインデックスに挿入するオプションもあります。したがって、ナビゲーション バーが一番上 (つまりインデックス 0) で、テーブル ビューが一番下 (つまり のインデックス[[[[self view] subviews] count] - 1]) である場合、次のようにカスタム ビューを間に挿入できます。

[[self view] insertSubview:customSubview atIndex:1];

このようにして、テーブルビューはスーパービューで1レベル下がり、サブビューの「レイヤー化」は次のようになります。

  1. インデックス 0 - ナビゲーション バー
  2. インデックス 1 - カスタム サブビュー
  3. インデックス 2 - テーブル ビュー

カスタムサブビューを標準のスーパービューに配置すると、以前のようにテーブルビューと一緒にスクロールしないため、自分で位置を維持する必要があることに注意してください。

于 2012-06-19T12:05:52.680 に答える