Как ограничить количество ячеек UITableview отображает? - PullRequest
10 голосов
/ 24 мая 2011

Я использую таблицу для отображения некоторой информации в приложении для викторин, над которым я работаю.Мой вопрос заключается в том, как сделать так, чтобы в табличном представлении отображалось только то количество ячеек, которое мне нужно.Я установил метод делегирования количества строк следующим образом:

-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
   return 5;
}

, но в нижней части табличного представления находятся пустые ячейки, которые не нужны.Если я установлю стиль табличного представления сгруппированным, я получу 5 ячеек, и под ними не будет пустых.Я видел, что другие люди сделали это, но, похоже, не могут решить это.Мне было интересно, добавили ли они каким-то образом пользовательское представление в нижний колонтитул таблицы, чтобы отменить пустые ячейки?

Любые идеи или помощь приветствуются.

Ответы [ 12 ]

15 голосов
/ 12 августа 2014

Если вы хотите сохранить разделитель, вы можете вставить фиктивный нижний колонтитул. Это ограничит просмотр таблицы только показом количества ячеек, возвращенных в tableView: numberOfRowsInSection:

self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];

В быстром:

self.tableView.tableFooterView = UIView(frame: CGRectZero)
2 голосов
/ 24 мая 2011

Гораздо более приятный метод, который не требует изменения размера ячейки, состоит в том, чтобы отключить разделитель по умолчанию (установить стиль на none), а затем иметь разделительную линию в самой ячейке.

2 голосов
/ 30 июля 2012

У меня была похожая проблема, как показать только разделители для ячеек, которые содержат данные.

Я сделал следующее:

  1. Отключить разделители для всего табличного представления. Вы можете сделать это в Инспектор для просмотра таблицы в Интерфейсном Разработчике или по телефону [yourTableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];.

  2. Внутри вашего cellForRowAtIndexPath, где вы заполняете свое табличное представление ячейками, создайте новый UIView и установите его как подпредставление для ячейки. Иметь фон этого вида светло-серый и слегка прозрачный. Вы можете сделать это с помощью следующего:

    UIView *separatorView = [[UIView alloc] initWithFrame:CGRectMake:
                                            (0, cell.frame.size.height-1, 
                                               cell.frame.size.width, 1)];
    [separatorView setBackgroundColor:[UIColor lightGrayColor]];
    [separatorView setAlpha:0.8f];
    [cell addSubView:separatorView];
    

    Ширина этого представления составляет 1 пиксель, что совпадает с разделителем по умолчанию, он проходит по длине ячейки внизу.

Поскольку cellForRowAtIndexPath вызывается только так часто, как вы указали в numberOfRowsInSection, эти подпредставления будут создаваться только для ячеек, которые содержат данные и должны иметь разделитель.

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

1 голос
/ 26 октября 2014

Это довольно просто.Просто установите размер всплывающего окна следующим образом: self.optionPickerPopOver.popoverContentSize = CGSizeMake (200, 200);Конечно, вы можете настроить размер (200 200) в зависимости от размера содержимого и количества строк.

1 голос
/ 01 ноября 2012

Это сработало для меня - у меня были лишние пустые строки в нижней части экрана на iphone 5 -

В моем случае мне понадобилось 9 строк

- (CGFloat)tableView:(UITableView *)tabelView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{        
    return self.tableView.frame.size.height / 9;
}
1 голос
/ 05 октября 2012

У вас всегда будет 5 рядов? Если это динамическая ситуация, вы должны установить количество строк в соответствии с источником данных таблицы. Например:

return [postListData count];

Возвращает количество записей в массиве, содержащем содержимое.

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

    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 2;
}

Без этого в табличном представлении будет только 1 раздел. С его помощью, как вы можете себе представить, вы можете указать количество секций.

1 голос
/ 24 мая 2011

Вы можете реализовать heightForRowAtIndexPath: и вычислить правильную высоту, чтобы отображать только 5 ячеек на экране.

0 голосов
/ 31 июля 2013

реализуйте эти два метода в вашем UITableViewController:

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
    if (section == tableView.numberOfSections - 1) {
        return [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)];
    }
    return nil;
}


- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
    if (section == tableView.numberOfSections - 1) {
        return 1;
    }
    return 0;
}

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

0 голосов
/ 25 апреля 2012

Как сказал Nyx0uf, ограничение размера ячейки может достичь этого. Например:

- (CGFloat)tableView:(UITableView *)tabelView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    CGFloat result;

    result = 100;

    return result;
}
0 голосов
/ 24 мая 2011

Попробуйте что-то вроде этого:

[table setFrame:CGRectMake(x, y, width, height*[list count])];

высота относится к высоте ячейки

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