-1

uitableview でページングを使用しています。私は40個のオブジェクトの配列を持っています。numberofrowsinsection メソッドでは、10 行を返しています。その平均総ページ数は 4 です。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

ページングで定数行を使用して、テーブルビューでセクションを使用しています。次のように、ページ内の行を区別します。

ここに画像の説明を入力してください

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];
于 2012-11-03T05:22:51.073 に答える
0

常にちょうど 40 行ありますか、それともそれより少ない可能性がありますか?

投稿したコードは、メソッド パラメーターが欠落している状態で始まります。コロンを付けないか、コロンの後に (データ型を指定して) パラメータを指定する必要があります。

あなたが投稿したコードには、いくつかの問題があります。最大の問題は、同じセルのテキストを 10 回設定することです。10 個のセルのテキストをそれぞれ 1 回設定する必要があります。

それにもかかわらず、あなたはこれについてすべて間違っています。投稿されたメソッドを次のように置き換えます。

-(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 に答える