如何在表的一部分中显示有限的行?

时间:2019-01-16 09:22:09

标签: ios objective-c uitableview

假设我在一个表中有两个部分,第1部分中有800个可重复使用的单元格。我们如何设置该部分使其一次显示10个单元格,当我单击“显示更多”按钮时,它应该加载接下来的10个单元格,依此类推?

5 个答案:

答案 0 :(得分:1)

部分问题:

  

第1节中有800个可重复使用的单元格

好像您在第1节中有800行,而不是800个单元格。呈现表格视图后,它将仅创建可以在屏幕上显示的单元格,并在出现更多数据时重新使用它们。

您需要执行以下操作:

  1. 创建一个包含800行的主数据源(例如数组)。 (例如allRows
  2. 创建另一个包含allRows中的部分数据的源。 (例如“ fetchedRows”)
  3. 在页脚或最后一行中添加一个Load More按钮。
  4. 在按下“加载更多”时,会从allRowsfetchedRows获取一定数量的行。 (例如10行)
  5. 使用数据源fetchedRows重新加载表视图。
  6. 第2部分也可以遵循相同的步骤。

答案 1 :(得分:0)

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

使用该部分。

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

答案 2 :(得分:0)

请按照以下步骤操作:

设置为全局:

var arrIndex = 10

然后进入

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

    return arrIndex

}

然后在表格视图底部添加按钮。在按钮操作中,请输入

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

它可能会帮助您。谢谢。

答案 3 :(得分:0)

您可以使用pageIndex设置全局变量var pageIndex:Int = 1并点按更多以将pageIndex加1并重新加载UITableview

我已经为第0部分编写了此逻辑,该逻辑最初会加载10条记录,

在此语句return (10 * pageIndex) + 1中,我在 +1 处增加了一行,因为+1用于加载更多按钮。

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {        
        if section == 0 {
            return (10 * pageIndex) + 1
        }else {
            return 10
        }
    }

答案 4 :(得分:0)

第一组全局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];
    });

}