Как показать ограниченные строки в разделе таблицы? - PullRequest
0 голосов
/ 16 января 2019

Допустим, у меня есть две секции в таблице, в секции 1 есть 800 многократно используемых ячеек. Как настроить раздел так, чтобы он отображал 10 ячеек за раз, а когда я нажимаю кнопку «Показать больше», он должен загружать следующие 10 ячеек и т. Д.?

Ответы [ 5 ]

0 голосов
/ 29 января 2019

Первый набор Global int Переменная:

@interface TableViewController () {

    int arrNum;
}

@end

@implementation TableViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    arrNum = 3;

}

Затем установите количество разделов:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {

    return 2;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    if (section == 0){
        return arrNum;
    }else {
        return 5;
    }

}

Затем создайте кнопку в нижнем колонтитуле раздела:

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

    UIButton *btn = [[UIButton alloc]init];
    [btn setTitle:@"btn Click" forState:UIControlStateNormal];
    [btn setBackgroundColor:[UIColor blueColor]];
    [btn addTarget:self action:@selector(btnClk) forControlEvents:UIControlEventTouchDown];
    return btn;
}

теперь задайте необходимое действие при нажатии кнопки:

-(void)btnClk {

    arrNum = arrNum + 2;
    dispatch_async(dispatch_get_main_queue(), ^{
        [self.tableView reloadData];
    });

}
0 голосов
/ 16 января 2019

вы можете управлять этим с помощью pageIndex, установить глобальную переменную var pageIndex:Int = 1 и нажать больше, чтобы увеличить pageIndex на 1 и перезагрузить UITableview

Я написал эту логику для раздела 0: изначально загружено 10 записей,

Я добавил еще одну строку на + 1 в этом выражении return (10 * pageIndex) + 1, потому что +1 для кнопки load more.

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {        
        if section == 0 {
            return (10 * pageIndex) + 1
        }else {
            return 10
        }
    }
0 голосов
/ 16 января 2019

Часть из вашего вопроса:

раздел 1 имеет 800 многократно используемых ячеек

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

Вам необходимо сделать следующее:

  1. Создать основной источник данных (скажем, массив), содержащий 800 строк. (скажем allRows)
  2. Создать другой источник, который содержит частичные данные из allRows. (скажем 'fetchedRows')
  3. Добавить кнопку Load More в нижний колонтитул или в последний ряд.
  4. Вкл. При нажатии «Загрузить еще» извлекается некоторое количество строк от allRows до fetchedRows. (скажем, 10 строк)
  5. Перезагрузить представление таблицы с использованием источника данных fetchedRows.
  6. Те же шаги можно выполнить и для раздела 2.
0 голосов
/ 16 января 2019

Пожалуйста, выполните следующие действия:

установлено в глобальном масштабе:

var arrIndex = 10

Тогда в

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    return arrIndex

}

Затем добавьте кнопку внизу таблицы. В действии кнопки напишите

 @objc func btnShowMoreClicked(sender : Any){
    arrIndex = arrIndex + 10
    self.tableView.reloadData()
 }

Это может вам помочь. Спасибо.

0 голосов
/ 16 января 2019

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int)

используйте раздел.

if section == 0 return 100 else if section == 1 return 10

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