UITableViewCell中的UILabel可以创build一个自定义的单元格,而不需要创build单独的类

在我的表格视图单元格中,我需要显示我的数组元素的内容在一个单元格中,如果我插入任何新的内容,以前的内容不会被覆盖。以前的内容和我的新内容应按顺序显示。这里是我的代码

- (void)viewDidLoad { [super viewDidLoad]; NSMutableArray *arrMain=[NSMutableArray arrayWithObjects: cnfqty, cnftitle, cnfrate, nil]; finarray=[[NSMutableArray alloc]init]; [finarray addObjectsFromArray:arrMain]; NSLog(@"%@",finarray); } - (void)viewDidUnload { [super viewDidUnload]; // Release any retained subviews of the main view. // eg self.myOutlet = nil; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation == UIInterfaceOrientationPortrait); } #pragma mark - Table view data source - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { // Return the number of sections. return 1; } -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return 150.0; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { // Return the number of rows in the section. return ( [finarray count] / 3 ); } - (UITableViewCell *) getCellContentView:(NSString *)cellIdentifier { UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; UILabel *tempLabel; //UIImage *tempImage; /* Create UI elements - Customize as you want your text to appear */ CGRect myFirstLabel = CGRectMake (65, 10, 200, 15); CGRect mySecondLabel = CGRectMake (65, 25, 200, 15); CGRect myThirdLabel = CGRectMake (65, 40, 200, 15); // CGRect myImage = CGRectMake (10, 10, 50, 50); //Initialize first label tempLabel = [[UILabel alloc] initWithFrame: myFirstLabel]; tempLabel.tag = 1; tempLabel.font = [UIFont boldSystemFontOfSize:12]; tempLabel.textColor = [UIColor lightGrayColor]; [cell.contentView addSubview: tempLabel]; //Initialize second label tempLabel = [[UILabel alloc] initWithFrame: mySecondLabel]; tempLabel.tag = 2; tempLabel.font = [UIFont boldSystemFontOfSize:12]; tempLabel.textColor = [UIColor lightGrayColor]; [cell.contentView addSubview: tempLabel]; //Initialize third label tempLabel = [[UILabel alloc] initWithFrame: myThirdLabel]; tempLabel.tag = 3; tempLabel.font = [UIFont boldSystemFontOfSize:12]; tempLabel.textColor = [UIColor lightGrayColor]; [cell.contentView addSubview: tempLabel]; //Initialize your picture //imgTemp = [[UIImageView alloc] initWithFrame: myImage]; //imgTemp.tag = 4; //[cell.contentView addSubview: tempImage]; return cell; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"aCell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [self getCellContentView: CellIdentifier]; } //This will create the actual UI elements UILabel *tempLabel1 = (UILabel *)[cell viewWithTag: 1]; UILabel *tempLabel2 = (UILabel *)[cell viewWithTag: 2]; UILabel *tempLabel3 = (UILabel *)[cell viewWithTag: 3]; //UIImageView *tempImage = (UIImageView *)[cell viewWithTag: 4]; // Populate the labels NSString *firstText = [NSString stringWithString: [finarray objectAtIndex: 3*(indexPath.row)]]; NSString *secondText = [NSString stringWithString: [finarray objectAtIndex: 3*(indexPath.row) + 1]]; NSString *thirdText = [NSString stringWithString: [finarray objectAtIndex: 3*(indexPath.row) + 2]]; // Populate the picture //UIImage *picture = [[UIImage alloc] initWithData:theObjectToPutInCell.picture]; tempLabel1.text = firstText; tempLabel2.text = secondText; tempLabel3.text = thirdText; // tempImage.image = picture; return cell; } } @end 

我与我的代码面临的问题是每个string显示在每个单元格,如果我插入任何新的string以前的内容都不见了,只有新的内容显示。

为了清楚这个问题的想法,我试图实施“join购物车”服务的网上购物。根据每个概念的项目必须从各种产品添加,并保存产品信息,并必须显示在表视图中的细节但我不明白

请指导请..提前感谢..

我的输出就像这个第一个图像

在这里输入图像说明

但我需要得到显示为Android中完成的第二个图像.. 在这里输入图像说明

以下是你可以尝试的东西:

创build一个像这样的函数来创build所有需要的graphics元素:

 // Cell appearence editing - (UITableViewCell *) getCellContentView:(NSString *)cellIdentifier { UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; UILabel *tempLabel; UIImage *tempImage; /* Create UI elements - Customize as you want your text to appear */ CGRect myFirstLabel = CGRectMake (65, 10, 200, 15); CGRect mySecondLabel = CGRectMake (65, 25, 200, 15); CGRect myThirdLabel = CGRectMake (65, 40, 200, 15); CGRect myImage = CGRectMake (10, 10, 50, 50); //Initialize first label tempLabel = [[UILabel alloc] initWithFrame: myFirstLabel]; tempLabel.tag = 1; tempLabel.font = [UIFont boldSystemFontOfSize:12]; tempLabel.textColor = [UIColor lightGrayColor]; [cell.contentView addSubview: tempLabel]; //Initialize second label tempLabel = [[UILabel alloc] initWithFrame: mySecondLabel]; tempLabel.tag = 2; tempLabel.font = [UIFont boldSystemFontOfSize:12]; tempLabel.textColor = [UIColor lightGrayColor]; [cell.contentView addSubview: tempLabel]; //Initialize third label tempLabel = [[UILabel alloc] initWithFrame: mySecondLabel]; tempLabel.tag = 3; tempLabel.font = [UIFont boldSystemFontOfSize:12]; tempLabel.textColor = [UIColor lightGrayColor]; [cell.contentView addSubview: tempLabel]; //Initialize your picture imgTemp = [[UIImageView alloc] initWithFrame: myImage]; imgTemp.tag = 4; [cell.contentView addSubview: tempImage]; return cell; } 

然后,在你的cellForRowAtIndexPath中,调用“devise函数”并用你的内容填充它:

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"aCell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [self getCellContentView: CellIdentifier]; } //This will create the actual UI elements UILabel *tempLabel1 = (UILabel *)[cell viewWithTag: 1]; UILabel *tempLabel2 = (UILabel *)[cell viewWithTag: 2]; UILabel *tempLabel3 = (UILabel *)[cell viewWithTag: 3]; UIImageView *tempImage = (UIImageView *)[cell viewWithTag: 4]; // Populate the labels NSString *firstText = [NSString stringWithString: [finarray stringAtIndex: 3*(indexPath.row)]]; NSString *secondText = [NSString stringWithString: [finarray stringAtIndex: 3*(indexPath.row) + 1]]; NSString *thirdText = [NSString stringWithString: [finarray stringAtIndex: 3*(indexPath.row) + 2]]; // Populate the picture UIImage *picture = [[UIImage alloc] initWithData:theObjectToPutInCell.picture]; tempLabel1.text = firstText; tempLabel2.text = secondText; tempLabel3.text = thirdText; tempImage.image = picture; return cell; } 

让我知道,如果有帮助!

 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { // Return the number of sections. return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { // Return the number of rows in the section. return [itemsData count]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { // static NSString *CellIdentifier = @"Cell"; NSString *CellIdentifier = [NSString stringWithFormat:@"%d", indexPath.row] ; UILabel *lblTitle = nil; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; cell.selectionStyle = UITableViewCellSelectionStyleNone; lblTitle =[[UILabel alloc]initWithFrame:CGRectMake(5, 15, 110, 44)]; lblTitle.backgroundColor = [UIColor clearColor]; lblTitle.textColor = [UIColor whiteColor]; lblTitle.font = [UIFont systemFontOfSize:11.0]; lblTitle.tag = 1; lblTitle.numberOfLines = 0; UILabel *lblType =[[UILabel alloc]initWithFrame:CGRectMake(125, 0, 75, 44)]; lblType.backgroundColor = [UIColor clearColor]; lblType.textColor = [UIColor whiteColor]; lblType.font = [UIFont systemFontOfSize:11.0]; lblType.tag = 2; UILabel *lblDate =[[UILabel alloc]initWithFrame:CGRectMake(200, 0, 60, 44)]; lblDate.backgroundColor = [UIColor clearColor]; lblDate.textColor = [UIColor whiteColor]; lblDate.font = [UIFont systemFontOfSize:11.0]; lblDate.tag = 3; UILabel *lblTime =[[UILabel alloc]initWithFrame:CGRectMake(265, 0, 50, 44)]; lblTime.backgroundColor = [UIColor clearColor]; lblTime.textColor = [UIColor whiteColor]; lblTime.font = [UIFont systemFontOfSize:11.0]; lblTime.tag = 4; [tableView beginUpdates]; [tableView endUpdates]; [cell.contentView addSubview:lblTitle]; [cell.contentView addSubview:lblType]; [cell.contentView addSubview:lblDate]; [cell.contentView addSubview:lblTime]; } NSString *text = [NSString stringWithFormat:@"%@,%@,%@",[[itemsData objectAtIndex:indexPath.row] objectForKey:@"address"],[[itemsData objectAtIndex:indexPath.row] objectForKey:@"title"],[[itemsData objectAtIndex:indexPath.row] objectForKey:@"zipcode"]]; CGSize constraint = CGSizeMake(CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), 20000.0f); CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:UILineBreakModeCharacterWrap]; if (!lblTitle) lblTitle = (UILabel*)[cell viewWithTag:1]; [lblTitle setText:text]; [lblTitle setFrame:CGRectMake(CELL_CONTENT_MARGIN, CELL_CONTENT_MARGIN, CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), MAX(size.height, 44.0f))]; UILabel *lblType = (UILabel *) [cell.contentView viewWithTag:2]; lblType.text =[[itemsData objectAtIndex:indexPath.row] objectForKey:@"type"]; UILabel *lblDate = (UILabel *) [cell.contentView viewWithTag:3]; lblDate.text =[[itemsData objectAtIndex:indexPath.row] objectForKey:@"date"]; UILabel *lblTime = (UILabel *) [cell.contentView viewWithTag:4]; lblTime.text =[[itemsData objectAtIndex:indexPath.row] objectForKey:@"time"]; return cell; } 

最后我通过下面的代码得到它

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"aCell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; UILabel *label1=[[UILabel alloc]init]; label1.frame=.....; ................ [cell.contentView addSubView: label1]; UILabel *label2=[[UILabel alloc]init]; label2.frame=.....; ................ [cell.contentView addSubView: label2]; UILabel *label3=[[UILabel alloc]init]; label3.frame=.....; ................ [cell.contentView addSubView: label3]; } 

标签的文本是像这样从单独的数组元素分配的

 NSMutableArray *label1Array=[NSMutableArray arrayWithObjects:@"",@"",nil]; NSMutableArray *label2Array=[NSMutableArray arrayWithObjects:@"",@"",nil]; NSMutableArray *label3Array=[NSMutableArray arrayWithObjects:@"",@"",nil];