如何使用分页显示表的更改内容

时间:2012-11-03 04:53:25

标签: ios objective-c algorithm

我正在使用uitableview进行分页。我有40个对象的数组。在numberofrowsinasection方法中,我返回10行。它的平均总页数是四。在pagecontrol方法中,我正在实现分页。当我喜欢

-(ibaction) pagecontrol:
{
    if (pagecontrol.currentpage == 0)
    {
        for (int i=0; i<10; i++  )
        {
            cell.textlabel.text = [objectarray objectatindex:i];
        }
    }

    if (pagecontrol.currentpage == 1)
    {
        for (int i=10; i<19; i++  )
        {
            cell.textlabel.text = [objectarray objectatindex:i];
        }
    }

    if (pagecontrol.currentpage == 2)
    {
        for (int i=20; i<29; i++  )
        {
            cell.textlabel.text = [objectarray objectatindex:i];
        }
    }

    if (pagecontrol.currentpage == 3)
    {
        for (int i=30; i<39; i++  )
        {
            cell.textlabel.text = [objectarray objectatindex:i];
        }
    }
}

但我在uiableview中发现了一个奇怪的结果。这是对的吗?我在哪里搞这个pagecontrol方法的错误?

2 个答案:

答案 0 :(得分:0)

你总是有40行还是可以少一些?

您发布的代码以缺少的方法参数开头。冒号后面应该没有冒号或参数(带有数据类型)。

您发布的代码有几个问题。最大的问题是您将同一单元格的文本设置为10次。您需要设置10个单元格的文本,每个单元格一次。

无论如何,你都错了。用以下方法替换您发布的方法:

-(IBAction)pagecontrol:(UIPageControl *)pageControl {
    [self.tableView reloadData];
}

然后,在tableView:cellForRowAtIndexPath:方法中,您应该执行以下操作:

- (void)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableView *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
    if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
    }

    int base = pagecontrol.currentPage * 10;
    int index = base + indexPath.row;
    NSString *text = objectArray[index];

    cell.textLabel.text = text;

    return cell;
}

这是您的numberOfSectionsInTableView:tableView:numberOfRowsInSection:方法的补充。

这就是你所需要的一切。

BTW - 案件很重要。不要用小写字母输入所有内容。使用正确的盒子正确输入。

答案 1 :(得分:0)

您在分页中使用常量行来使用tableview中的部分。它区分页面中的行, 像这样:

Enter image description here

在tableview中设置节数:

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

// Set rows in section
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    switch(section){
       case 0:
       return 10;
       break;
       case 1:
       return 10;
       break;
       .....
       .....
    }
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *FirstLevelCell= @"FirstLevelCell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:FirstLevelCell];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:FirstLevelCell] autorelease];
    }

    switch([indexPath section]){
        case 0:
        {
            //Add your code
        }
        break;
        case 1:
        {
            //Add your code
        }
        break;
        .........
        .........
        .........
        .........
        .........
    }
}

//Reload table view
[self.tableView reloadData];