UITableView нижний колонтитул, остановить плавание поверх содержимого - PullRequest
63 голосов
/ 21 апреля 2011

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

То же самое и с заголовком.

Есть ли какой-нибудь простой способ отключить его отображение поверх таблицы во время прокрутки?

Спасибо всем, я не мог найти ответ в другом месте.

Ответы [ 9 ]

110 голосов
/ 22 апреля 2011

Хорошо, получается, что если вы установите нижний колонтитул с помощью blahblahtableView.tableFooterView = someview;, нижний колонтитул не будет прокручиваться вместе с таблицей.

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

Не уверен, почему я не смог найти этот ответ раньше. Извините всех:)

29 голосов
/ 26 февраля 2015

У вас есть 2 типа нижнего колонтитула: один - нижний колонтитул , а другой - нижний колонтитул .

Нижний колонтитул отображается ниже каждого раздела . С другой стороны, нижний колонтитул таблицы появляется только один раз в конце таблицы .

Не существует способа, позволяющего одним щелчком отключить перемещение нижнего колонтитула раздела.

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

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

24 голосов
/ 11 сентября 2015
- (id)init {
    self = [self initWithStyle:UITableViewStyleGrouped]; //Default is UITableViewStylePlain
    return self;
}
3 голосов
/ 05 ноября 2013
self.YOUR_TABLE_VIEW.tableFooterView = YOUR_FOOTER_VIEW;
1 голос
/ 26 октября 2018

Если ваши ячейки разделены на секции и вы используете функцию:

func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView?

, чтобы установить нижний колонтитул, то в IB вы также можете установить стиль UITableView на Сгруппированный - этодругое возможное решение!

0 голосов
/ 25 января 2017

Проверьте мой ответ здесь, https://stackoverflow.com/a/41816730/1553351. Код делает именно то, что вы описали в своем вопросе

0 голосов
/ 02 сентября 2015

# знак прагмы - для этого есть два варианта -

  1. Использование делегата UITableView

    Эффект: плавающий нижний колонтитул в табличном представлении

-(CGFloat)tableView:(UITableView *)tableView
heightForFooterInSection:(NSInteger)section{
    return HEIGHT;
}
-(UIView*)tableView:(UITableView *)tableView
viewForFooterInSection:(NSInteger)section{
    return FOOTERVIEW
}

Использовать установщик представления таблицы

Эффект: присоединяется внизу последней ячейки

theTableView.tableFooterView = YOURFOOTERVIEW

// Do not set this delegate
// or you would get a extra blank at the bottom of the table

//  -(CGFloat)tableView:(UITableView *)tableView
//  heightForFooterInSection:(NSInteger)section{
//    return HEIGHT;
//  }
0 голосов
/ 10 мая 2011

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

Мое решение для преодоления этого состояло в том, чтобы создать 2 раздела, один из которых содержит ячейки таблицы, а другой - пустое НО с заголовком. Этот заголовок покажет счетчик и будет вести себя так, как я хотел (чтобы он всегда оставался внизу таблицы, а не перекрывал ячейки).

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

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

0 голосов
/ 21 апреля 2011

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

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

Надеюсь, вы получите мой ответ, я сделал что-то похожее на это, и это сработало (я хотел что-то вроде "Release to update" поверх таблицы)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...