Как сделать заголовок UITable в верхней части экрана при использовании раскадровки?

Я сделал заголовок, используя этот пост: Представления заголовка таблицы в StoryBoards

Но я не могу сделать заголовок (исправление) в верхней части экрана во время прокрутки.

Как это можно достичь?

P.S. Стиль таблицы прост, и когда я устал перегружать viewForHeaderInSection и возвратил выход для заголовка, он только ухудшался.

Спасибо заранее!

Ответ 1

Я смог сделать это (по крайней мере, в iOS 6), как это, не знаю, почему это работает:)

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {

    if(self.headerManualView == nil) {
        //allocate the view if it doesn't exist yet
        headerManualView  = [[UIView alloc] init];

        //create the button
        UITextField *txtField = [[UITextField alloc] initWithFrame:CGRectMake(10, 3, 250, 44)];

        //the button should be as big as a table view cell
        txtField.borderStyle = UITextBorderStyleRoundedRect;

        //set action of the button
        //[txtField addTarget:self action:@selector(removeAction:) forControlEvents:UIControlEventTouchUpInside];

        //add the button to the view
        [headerManualView addSubview:txtField];
    }

    //return the view for the footer
    return headerManualView;
}

Ответ 2

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

-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    CGRect rect = self.tableHeaderView.frame;
    rect.origin.y = MIN(0, self.tableView.contentOffset.y);
    self.tableHeaderView.frame = rect;
}

Альтернативой является просмотр заголовка для первого раздела. Вы не можете использовать subview в viewForHeaderInSection, вы должны вернуть туда представление, которое еще не находится в иерархии представлений. Преимущество метода заключается в том, что представление заголовка раздела сконструировано так, чтобы оно находилось в верхней части таблицы, недостатком является то, что вы можете захотеть иметь заголовки для разделов в этой функции, это сломает решение.

Ответ 3

Я думаю, вам лучше использовать UIViewController, а не UITableViewController в раскадровке, чтобы добиться этого. Просто поместите заголовок в верхнюю часть представления, в раскадровку и поместите UITableView под заголовком.