Загрузка записей в TableView - (кнопка «Дополнительно») - PullRequest
2 голосов
/ 07 февраля 2012

У меня около 100 записей для отображения в таблице.Но я буду отображать только 10 записей, и когда пользователь щелкает последнюю строку (Which will have a button that will say load the next 10 records), таблица будет содержать следующие 10 записей.

Я успешно отобразил кнопку «больше» в последней ячейке.Но я не знаю, как отображать 10 записей одновременно.Мой код до сих пор;

ViewDidLoad

self.arrayThatContainsAllHundredRecords= [NSArray arrayWithArray:hundredRecordsArray];

[self performSelector:@selector(addTheTableFooter:) withObject:nil afterDelay:0.5]; 

addTheTableFooter

UIView* footer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 30)];

[footer addSubview:moreButton]; // i have also added an event to the button click see below, and i have not shown it here.

self.tableView.tableFooterView =footer;

[self.mainWindow removeFromSuperview];

[self.tableView reloadData];

Выше будет отображаться More кнопка после отображения всех 100 записей.

moreButtonClickAction

-(void)moreButtonClickAction {
NSLog(@"Suppose to load the next 10 records");
}

numberOfRowsInSection

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

    return [self.arrayThatContainsAllHundredRecords count];
}

Мне нужноспособ редактирования этого кода, так что я буду отображать только 10 записей одновременно, и отображать следующие 10, когда пользователь нажимает кнопку more.(Теперь общее количество записей должно быть 20 - (предыдущие 10 + 10 записей в результате нажатия кнопки more))

ПРИМЕЧАНИЕ. Я буду загружать все 100 записей и сохранять их в self.arrayThatContainsAllHundredRecordsв методе viewDidLoad.

Я считаю, что мне нужно внести некоторые изменения перед выполнением [self.tableView reloadData];, как в инструкции для загрузки 10 записей.

Хорошо, скажем, если у меня было только 53записей.Затем пользователь нажимает кнопку «больше» 5 раз, а на 6-м экземпляре таблица должна отображать только 3 записи.Как это можно сделать в табличном представлении: numberOfRowsInSection:?

Ответы [ 2 ]

2 голосов
/ 07 февраля 2012

tableView:numberOfRowsInSection: - это метод, который определяет, сколько строк будет показано, поэтому первым шагом будет изменить это.Вам также необходимо свойство в вашем контроллере представления, чтобы отслеживать, сколько строк должно быть видимым.Примерно так:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return self.numberOfRowsVisible;
}

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

-(void)moreButtonClickAction {
    if (self.numberOfRowsVisible < self.maxNumberOfRows) 
        self.numberOfRowsVisible = MIN(self.numberOfRowsVisible + 10, self.maxRows);
    [self.tableView reloadData];
}
1 голос
/ 07 февраля 2012

Чтобы отображать 10 строк за раз, ваш tableview:numberOfRowsInSection: должен возвращать 10 (вместо того, чтобы возвращать общее количество записей в исходном массиве).

Ваш tableView:cellForRowAtIndexPath: должен затем обрабатывать пейджинг, добавляятекущая страница умножается на 10 для свойства indexPath.row, чтобы определить, какой элемент в исходном массиве использовать для подачи в представление ячейки.

При нажатии на кнопку «Еще» следует вызвать [self.tableView reloadData];.

Редактировать: Ваш cellForRowAtIndexPath: метод должен выглядеть примерно так:

- (UITableViewCell *)tableView:(UITableView *)tableView 
        cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"TesterCell";

    UITableViewCell *cell = [tableView 
        dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {

        cell = [[[UITableViewCell alloc] 
            initWithStyle:UITableViewCellStyleDefault 
            reuseIdentifier:CellIdentifier] autorelease];
    }

    NSInteger dataIndex = indexPath.row + (pageNumber * 10);
    MyDataObject *data = (MyDataObject *)[self.arrayThatContainsAllHundredRecords 
        objectAt:dataIndex];

    NSString *cellText = data.LastName; // or whatever

    cell.textLabel.text = cellText;

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