-1

我正在使用带有 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方法的错误?

4

2 回答 2

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:andtableView:numberOfRowsInSection:方法的补充。

这就是你所需要的。

顺便说一句 - 情况很重要。不要用小写字母输入所有内容。用正确的大小写正确输入。

于 2012-11-03T05:09:45.223 回答
0

您在分页中使用常量行来使用 tableview 中的部分。它区分页面中的行,如下所示:

在此处输入图像描述

设置tableview中的section数量:

- (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];
于 2012-11-03T05:22:51.073 回答