Как сохранить ячейку заголовка в ячейках таблицы в Swift 2.0

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

Я использую последнюю версию XCode

Ответ 1

ПЕРЕЙДИТЕ К РАССКАЗУ> ВЫБРАТЬ ВИД> ВЫБРАТЬ ТАБЛИЦУ> ИНСПЕКТОР ИМУЩЕСТВА> СТИЛЬ ИЗМЕНЕНИЯ В ГРУППОВАННУЮ ИЗ PLAIN

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

см. изображение: enter image description here

Ответ 2

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

Чтобы сделать это, верните два раздела из источника данных

func numberOfSectionsInTableView(tableView: UITableView) -> Int
{
     return 2
}

И в источнике данных возвращаются условные ячейки

func tableView(tableView: UITableView, numberOfRowsInSection section:    Int) -> Int
{
    If(section == 1) {
      return <Return number of cell you want to display above header>
    } else {
      return <Return number of cell you want to display below header>
    }
}

Затем переопределите делегат

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?
{
    if(section == 0) {
        return nil //As you do not have to display header in 0th section, return nil
    } else {
        return <Return your header view>

       //You can design your header view inside tableView as you design cell normally, set identifier to it and dequeue cell/headerView as:
       //However this may result in unexpected behavior since this is not how the tableview expects you to use the cells.

        let reuseIdentifier : String!
    reuseIdentifier = String(format: "HeaderCell")

        let headerView = tableView.dequeueReusableCellWithIdentifier(reuseIdentifier, forIndexPath: NSIndexPath(forRow: 0, inSection: 0))

        return headerView
    }
}

Установите условную высоту как

func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat
{
    if(section == 0) {
        return 0 
    } else {
        return <Return your header view height>
    }
}

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

Надеюсь, что это поможет вам.