0

I have this issue on adding a last cell row to my tableView. Can someone please tell me what's wrong with my code as the last row appears but it also appears elsewhere when the table is scrolled down. Any help will be greatly appreciated, Thank you. Here's my code:

@interface ViewOrderViewController : UIViewController < UITableViewDataSource, UITableViewDelegate>  { 
    IBOutlet UITableView *tabView;
}


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

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [appDelegate.vieworderArray count] + 1;
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"Cell"];
    }
NSUInteger row = [indexPath row];

if(row == [appDelegate.vieworderArray count] ) {
    cell.textLabel.text = [NSString stringWithFormat:@"extra cell"];
}else{            
     Vieworder *vieworderObj = (Vieworder *)[appDelegate.vieworderArray objectAtIndex:indexPath.row];

     NSMutableString *mcmenuNameQuantity = [NSMutableString stringWithFormat:@"%@ X %i", vieworderObj.mcmenu_name, vieworderObj.mcmenu_quantity];
     UILabel *mcmenuLabel = [[UILabel alloc] initWithFrame:CGRectMake(45, 0, 200, 25)];

     [mcmenuLabel setFont:[UIFont systemFontOfSize:13.0f]];
     [mcmenuLabel setText:mcmenuNameQuantity];       
     UILabel *mcmenuPricexquantity = [[UILabel alloc] initWithFrame:CGRectMake(213, 0, 60, 25)];
     [mcmenuPricexquantity setFont:[UIFont systemFontOfSize:12.0f]];
     mcmenuPricexquantity.textAlignment = NSTextAlignmentRight;
     NSMutableString *mcmenuPriceQuantityString = [NSMutableString stringWithFormat:@"%0.2f", vieworderObj.mcmenu_total_price];
     mcmenuPricexquantity.numberOfLines = 2;
     [mcmenuPricexquantity setText:mcmenuPriceQuantityString];

     UIButton *deleteButton = [UIButton buttonWithType:UIButtonTypeCustom];
     deleteButton.frame = CGRectMake(12.0f, 0.0f, 25.0f, 25.0f);
     deleteButton.tag = indexPath.row;
     UIImage* imageDelete = [[UIImage alloc] init];
     imageDelete = [UIImage imageNamed:[NSString stringWithFormat:@"vieworder_delete.png"]];
     [deleteButton setImage:imageDelete forState:UIControlStateNormal]
     [deleteButton addTarget:self action:@selector(performExpand:) forControlEvents:UIControlEventTouchUpInside];

     UIButton *editButton = [UIButton buttonWithType:UIButtonTypeCustom];
     editButton.frame = CGRectMake(280.0f, 0.0f, 25.0f, 25.0f);
     UIImage* imageEdit = [[UIImage alloc] init];
     imageEdit = [UIImage imageNamed:[NSString stringWithFormat:@"vieworder_edit.png"]];
     [editButton setImage:imageEdit forState:UIControlStateNormal];
     editButton.tag = indexPath.row;
     [editButton addTarget:self action:@selector(buttonClicked2:) forControlEvents:UIControlEventTouchUpInside];

     [cell.contentView addSubview:deleteButton ];
     [cell.contentView addSubview:mcmenuLabel];
     [cell.contentView addSubview:mcmenuPricexquantity ];
     [cell.contentView addSubview:editButton ];
     [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 
}    
return cell;

}

iAppDeveloper
  • 1,088
  • 1
  • 8
  • 16
Marco
  • 1
  • 2

1 Answers1

0

Use simplest code first

arr=@[@"A",@"B",@"C",@"D",@"E",@"F",@"A",@"B",@"C",@"D",@"E",@"F",@"A",@"B",@"C",@"D",@"E",@"F",@"A",@"B",@"C",@"D",@"E",@"F",@"A",@"B",@"C",@"D",@"E",@"F",@"A",@"B",@"C",@"D",@"E",@"F"];

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [arr count]+1;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:@"cell"];

    if (cell==nil) {
        cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
    }

    cell.textLabel.text=(indexPath.row==arr.count)?@"End of Row":arr[indexPath.row];

    return cell;
}

If it is working then then there should be some problem with your else condition where you are adding multiple subviews to cell.ContentView.

Prince Kumar Sharma
  • 12,591
  • 4
  • 59
  • 90