2012-06-19 135 views
0

我有一個UITableView和一個小的自定義視圖。我希望自定義保持在導航欄下方,但在tableview之上。所以當自定義視圖上下移動時,看起來自定義視圖從導航欄的後面彈出。如何在導航欄是超視圖視圖時在導航欄後面放置視圖?

首先我讓自定義視圖的tableview子視圖,一切都很好。但是當tableview被滾動時,自定義視圖的位置也會改變,這不是我想要的。

然後我做了導航欄的超視圖,但現在自定義視圖保持在導航欄上方。我不知道如何改變父視圖和子視圖之間的z順序。

那麼有人可以給我一些建議嗎?

謝謝!

回答

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. 索引0 - 導航欄
  2. 索引1 - 自定義子視圖
  3. 索引2 - 表視圖

雖然把自定義的子視圖放到標準的超級視圖中,但是你必須保持自己的位置,因爲它不會像以前那樣一起滾動tableview。

+0

在我的例子中,self.view == self.tableview,因爲「self」是一個UITableViewController。 –

+0

完成! [self.tableView.superview insertSubview:customView aboveSubview:self.tableView]就是我想要的!謝謝〜 –