2016-04-19 3 views
1

У меня есть вид в верхней части экрана (под панелью навигации). Под видом видна таблица.Вид на стол с надписью над ним не с ним

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

Может кто-нибудь порекомендовать какое-то направление?

Я пытался сделать это, и ничего полезного не пришло. Надеюсь, я объясню это достаточно хорошо.

ответ

1

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

+0

Даже если у меня есть заголовок для представления таблицы? Я попытался вытащить представление в виде таблицы, и я больше не вижу его. – asheyla

+0

Странно, но он работает. Я просто пробовал на игровой площадке. Если я правильно помню, этот метод не работал в более ранних версиях iOS. –

+0

Ой, это сработало! Я бы не ожидал, что смогу это сделать. Благодаря! Я отметил ваш ответ так же правильно, как вы первым предложили это. – asheyla

0

Вы можете перехватить прокручивающую реализацию метода scrollViewDidScroll в своем делегате представления таблицы и в этом методе обновить frame (или ограничения, если вы используете AutoLayout) этого наложения.

+0

Я уже использую это для заголовков двух разделов, которые у меня есть. – asheyla

0

Есть два решения, которые я могу думать здесь:

Решения 1: Добавить ячейку прототипа в таблице, и использовать его как вид вы хотите отобразить в верхней части вашего Таблица. Затем в вашем коде вы можете загрузить эту ячейку в индекс 0, чтобы убедиться, что она будет загружена в самой верхней части таблицы.

Пример кода:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if(indexPath.row == 0) 
    { 
     TopMostTableCell *tableCell = (TopMostTableCell *)[tableView dequeueReusableCellWithIdentifier:@"TopMostTableCell"]; 

     return tableCell; 
    } 

    else 
    { 
     OtherTableCell *tableCell = (OtherTableCell *)[tableView dequeueReusableCellWithIdentifier:@"OtherTableCell"]; 

     return tableCell; 
    } 
} 

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

Вы можете добавить представление через кодировку или загрузить файл nib.

Пример кода:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UIView *header = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 200, 50)]; 

    //loading from nib file 
    UIView *headFromNib = [[[NSBundle mainBundle] loadNibNamed:@"Header" owner:self options:nil] objectAtIndex:0]; 

    [header setBackgroundColor:[UIColor blackColor]]; 
    _table.tableHeaderView = header; 
} 

Надеется, что это помогает. :)

+0

Благодарим вас за ответ. Если таблица имеет заголовок, следует ли добавить представление в заголовок или непосредственно в таблицу? – asheyla

+0

Вы должны добавить это в заголовок.В противном случае Если у вас есть отдельный макет для вашего заголовка, и вы хотите, чтобы этот вид (вы говорите) поверх заголовка таблицы, вы могли бы также присоединиться к макету своего заголовка и этого представления, а затем добавить это объединенное представление (header + view) в разделе заголовка таблицы. –

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