在我的表视图单元格中,我需要在单个单元格中显示数组元素的内容,如果我插入任何新内容,则不会覆盖先前的内容。应按顺序显示之前的内容和我的新内容这是我的代码
- (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.
// e.g. 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
我的代码所面临的问题是每个单元格中都会显示每个字符串,如果我插入任何新字符串,之前的内容就会消失,只显示新内容。
为了清楚了解这个问题,我试图实施"添加到购物车"在线购物服务。根据概念,必须从各种产品中添加项目并保存产品信息,并且必须在表格视图中显示详细信息。但我没有得到它..
请指导......请提前谢谢..
我的输出就像第一张图片
但我需要将显示作为在Android中完成的第二张图片。
答案 0 :(得分:3)
您可以尝试以下方法:
创建一个像这样的函数来创建所需的所有图形元素:
// 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中,调用“设计函数”并用你的内容填充它:
- (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;
}
让我知道它是否有帮助!
答案 1 :(得分:1)
- (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;
}
答案 2 :(得分:1)
最后我按照代码
得到了它- (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];