2012-06-19 1 views
0

У меня есть UITableView и небольшой пользовательский вид. Я хочу, чтобы пользователь оставался под панелью навигации, но над таблицей. Поэтому, когда пользовательский вид перемещается вверх и вниз, похоже, что пользовательский вид появляется из панели навигации.Как разместить представление за навигационной панелью, когда панель навигации является видом супервизора?

Вначале я делаю пользовательский вид подсмотра таблицы, и все кажется прекрасным. Но когда прокручивается табличное представление, позиция пользовательского представления также изменяется, но это не то, что я хочу.

Затем я сделал навигационную панель надстройкой, но теперь пользовательский вид остается над панелью навигации. И я не знаю, как изменить 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. Index 2 - просмотр таблицы

Остерегайтесь того, что, ставя свое обычное подчинение в стандартный супервизор, вам нужно будет сохранить позицию самостоятельно, поскольку она не будет прокручиваться вместе с табличным представлением, как и раньше.

+0

В моем случае self.view == self.tableview, потому что «я» является UITableViewController. –

+0

Готово! [self.tableView.superview insertSubview: customView aboveSubview: self.tableView] - это то, что я хочу! Спасибо ~ –

Смежные вопросы