在tableView上添加最后一行单元格(不是sqlite表的一部分)

时间:2013-08-20 05:20:39

标签: uitableview custom-cell

我在将最后一个单元格行添加到tableView时出现此问题。 有人可以告诉我我的代码出现了什么问题,因为最后一行出现了,但当表格向下滚动时,它也出现在其他地方。非常感谢任何帮助,谢谢。这是我的代码:

@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;

}

1 个答案:

答案 0 :(得分:0)

首先使用最简单的代码

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;
}

如果它正常工作那么你的其他情况应该会有一些问题,你要向cell.ContentView添加多个子视图。