2

のような配列があり、値がarraypartno含まれており、ページングのように次のボタンのインとオンを表示する必要があります。 しかし、次のボタンをクリックすると、値が追加され、セルが次のように増加します。しかし、ページングのように、セルで最初に、次に次にしたい....8020-20 valuestableview cellnext 20 valuesclick
406020 values20 valuestableview

この問題を解決するために私を導いてください。ありがとうございます

テーブル ビュー セルのコードは次のとおりです。

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

  static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

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

cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
cell.backgroundColor=[UIColor clearColor];

UILabel *lblplate1 = [[UILabel alloc]initWithFrame:CGRectMake(20, 0, 200, 30)];

lblplate1.text = [arraypartno  objectAtIndex:indexPath.row];

lblplate1.textAlignment=UITextAlignmentLeft;
lblplate1.textColor = [UIColor colorWithRed:2.0/255.0 green:143.0/255.0 blue:213.0/255.0 alpha:1];
lblplate1.backgroundColor =[UIColor clearColor];
lblplate1.font = [UIFont fontWithName:@"Helvetica" size:14];
[cell.contentView addSubview:lblplate1];
[lblplate1 release];
lblplate1 = nil;

return cell;

}

lowvalue は 0 から初期化され、次のボタンをクリックすると増加します

 -(void)next:(id)sender
 {
  lowvalue= lowvalue+20;

  NSString *str = [[NSString alloc]initWithFormat:@"http://demo.com/New/web_serv/wspartsearch.php?search=%@&start=%d&count=20",searchText,lowvalue];

}

前のボタンをクリックすると減少します

-(void)previous:(id)sender
{
lowvalue= lowvalue-20;

 NSString *str = [[NSString alloc]initWithFormat:@"http://demo.com/New/web_serv/wspartsearch.php?search=%@&start=%d&count=20",searchText,lowvalue];

}

一度に 20 個の値のみが必要です。

4

4 に答える 4

1

私はあなたが80個のオブジェクトの事前定義された初期化された配列を持っていると仮定していますNSMutableArrayデータソースの2番目を作ります私はそれにデータdataElementsが存在する名前をtableView付けViewDidLoadますあなたの""からnextMethod20個の値をコピーします。例:1.Make 2.make .I name itdataElementsarraypartnoint counter=0;NsMutableArraydataElements

-(IBAction)nextButtonPressed:(id)sender{

            if(counter < 20){
                for(int i=0 ; i<20 ;i++ ){
                    [dataElements addObject:[arraypartno objectAtIndex:i]];
                    counter++;
                }
            }else if(counter<40){
                for(int i=20 ; i<40 ;i++ ){
                    [dataElements replaceObjectAtIndex:i withObject:[arraypartno objectAtIndex:i]];
                    counter++;
                }
            }else if(counter<60){
                for(int i=40 ; i<60 ;i++ ){
                    [dataElements replaceObjectAtIndex:i withObject:[arraypartno objectAtIndex:i]];
                    counter++;
                }
            }else if(counter<80){
                for(int i=60 ; i<80 ;i++ ){
                    [dataElements replaceObjectAtIndex:i withObject:[arraypartno objectAtIndex:i]];
                    counter++;
                }
            }
            [self.tableView reloadData];
    }
    -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return [dataElements count];



    //OR
    // return 20;
    }

それでも混乱する場合は、質問してください。

于 2013-02-22T07:55:21.293 に答える
1

何かのようなもの、

初期化するtotalShowCount = 20; (totalShowCount < [arraypartno count])

1) In numberOfRowsInSectiondatasource メソッドreturn totalShowCount-1;

totalShowCount2) 次のボタン アクションで、次の 20 個の値で更新しtotalShowCount+=20ます。

3)[tableview reloadData];

次のボタンでいくつかの条件が必要になる場合がありますif(totalShowCount<[arraypartno count])。その後、2 番目と 3 番目のステップのみを実行します。

于 2013-02-22T06:45:58.153 に答える
1

デフォルトでは numberOfItemsToDisplay = 20;

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    {
        if (numberOfItemsToDisplay >= [self.aryAlerts count])
        {
            numberOfItemsToDisplay = [self.aryAlerts count];
            return 1;
        }
        return 2;
    }

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        if (section == 0)
        {
            return numberOfItemsToDisplay;
        }
        else
        {
            return 1;
        }
    }

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        if (indexPath.section == 0)
        {
            static NSString *CellIdentifier = @"YourCustomCell";
            YourCustomCell *objYourCustomCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
            if (objYourCustomCell == nil)
            {
                NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"YourCustomCell" owner:self options:nil];
                for(id currentObject in topLevelObjects)
                {
                    if ([currentObject isKindOfClass:[YourCustomCell class]])
                    {
                        objYourCustomCell = (AlertsCustomCell *) currentObject;
                        break;
                    }
                }
            }
            objYourCustomCell.lbl.text = [[self.aryAlerts objectAtIndex:indexPath.row]valueForKey:@"vName"];
            return objYourCustomCell;
        }
        else
        {
            static NSString *CellIdentifier = @"Cell";
            UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
            if (cell == nil)
            {

                cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
                [cell.contentView addSubview:[self loadMoreViewForTable:self.view]];
            }
            return cell;
        }
    }
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        [self.tblAlertsList deselectRowAtIndexPath:indexPath animated:YES];
        if (indexPath.section == 1)
        {
            numberOfItemsToDisplay =  [self loadMore:numberOfItemsToDisplay arrayTemp:self.aryAlerts tblView:self.tblAlertsList];
            [self.tblAlertsList endUpdates];
        }else
        {
           // action if it is not LoadMore
        }
    }

    + (NSInteger)loadMore : (NSInteger)numberOfItemsToDisplay arrayTemp:(NSMutableArray*)aryItems tblView:(UITableView*)tblList
    {
        int count =0;
        NSUInteger i, totalNumberOfItems = [aryItems count];
        NSUInteger newNumberOfItemsToDisplay = MIN(totalNumberOfItems, numberOfItemsToDisplay + kNumberOfItemsToAdd);
        NSMutableArray *indexPaths = [[NSMutableArray alloc] init];
        for (i=numberOfItemsToDisplay; i<newNumberOfItemsToDisplay; i++)
        {
            count++;
            [indexPaths addObject:[NSIndexPath indexPathForRow:i inSection:0]];
        }
        numberOfItemsToDisplay = newNumberOfItemsToDisplay;
        [tblList beginUpdates];
        [tblList insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationLeft];
        if (numberOfItemsToDisplay == totalNumberOfItems) {
            [tblList deleteSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationLeft];
        }
        NSIndexPath *scrollPointIndexPath;
        if (newNumberOfItemsToDisplay < totalNumberOfItems)
        {
            scrollPointIndexPath = [NSIndexPath indexPathForRow:numberOfItemsToDisplay-kNumberOfItemsToAdd inSection:0];
        }
        else
        {
            scrollPointIndexPath = [NSIndexPath indexPathForRow:i-count inSection:0];
        }
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 100000000), dispatch_get_main_queue(), ^(void){
            [tblList scrollToRowAtIndexPath:scrollPointIndexPath atScrollPosition:UITableViewScrollPositionNone  animated:YES];
        });
        return numberOfItemsToDisplay;
    }
于 2013-02-22T06:50:17.447 に答える
0

NSArray最初に、次の 20 個のオブジェクトを追加する前に、既に存在するオブジェクトを削除する必要があります。

試す:

[myArray removeAllObjects];

次に、配列に次の 20 個のオブジェクトを追加します。

次に、テーブルビューをリロードします。

于 2013-02-22T06:36:20.997 に答える