我正在创建一个包含20行的TableView
。我必须在偶数单元格中添加单个标签,我必须在奇数单元格中添加两个标签。当我添加所需的标签并滚动我的表格时,标签当我下楼帮助我时,我感到很失望。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
// UITableView *cell=[tableView ]
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
if(indexPath.row%2==0)
{
UILabel *cellLabel=[[UILabel alloc]initWithFrame:CGRectMake(100, 40, 40, 40)];
cellLabel.text=@"o1";
[cell addSubview:cellLabel];
[cellLabel release];
}
else
{
UILabel *cellLabel1=[[UILabel alloc]initWithFrame:CGRectMake(100, 40, 40, 40)];
cellLabel1.text=@"e1";
[cell addSubview:cellLabel1];
[cellLabel1 release];
UILabel *cellLabel2=[[UILabel alloc]initWithFrame:CGRectMake(150, 40, 40, 40)];
cellLabel2.text=@"e2";
[cell addSubview:cellLabel2];
[cellLabel2 release];
}
}
答案 0 :(得分:1)
检查一下。这和你的代码一样,我只是改变了每个标签的Y位置,并且滚动工作正常。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{ static NSString * CellIdentifier = @“Cell”;
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
// UITableView *cell=[tableView ]
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
if(indexPath.row%2==0)
{
UILabel *cellLabel=[[UILabel alloc]initWithFrame:CGRectMake(100, 10, 40, 40)];
cellLabel.text=@"o1";
[cell addSubview:cellLabel];
}
else
{
UILabel *cellLabel1=[[UILabel alloc]initWithFrame:CGRectMake(100, 10, 40, 40)];
cellLabel1.text=@"e1";
[cell addSubview:cellLabel1];
UILabel *cellLabel2=[[UILabel alloc]initWithFrame:CGRectMake(150, 10, 40, 40)];
cellLabel2.text=@"e2";
[cell addSubview:cellLabel2];
}
}
return cell;
}
答案 1 :(得分:0)
这样做:
(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
// UITableView *cell=[tableView ]
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
UILabel *cellLabel=[[UILabel alloc]initWithFrame:CGRectMake(100, 40, 40, 40)];
cellLabel.text=@"o1";
cellLabel.tag = 2;
[cell addSubview:cellLabel];
[cellLabel release];
UILabel *cellLabel1=[[UILabel alloc]initWithFrame:CGRectMake(100, 40, 40, 40)];
cellLabel1.text=@"e1";
cellLable1.tag = 3;
[cell addSubview:cellLabel1];
[cellLabel1 release];
UILabel *cellLabel2=[[UILabel alloc]initWithFrame:CGRectMake(150, 40, 40, 40)];
cellLabel2.text=@"e2";
cellLabel2.tag = 4;
[cell addSubview:cellLabel2];
[cellLabel2 release];
}
UILabel *label1 = (UILabel *) [cell viewWithTag:2];
UILabel *label2 = (UILabel *) [cell viewWithTag:3];
UILabel *label3 = (UILabel *) [cell viewWithTag:4];
if (indexPath.row%2==0)
{
label1.hidden = FALSE;
label2.hidden = TRUE;
label3.hidden = TRUE:
}
else
{
label1.hidden = TRUE;
label2.hidden = FALSE;
label3.hidden = FALSE;
}
}
答案 2 :(得分:0)
这两种细胞是不同的,所以我会为每种细胞制作不同的细胞标识符。类似的东西:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *EvenCellIdentifier = @"EvenCell";
static NSString *OddCellIdentifier = @"OddCell";
NSString* cellIdentifier = (indexPath.row % 2) == 0 ? EvenCellIdentifier : OddCellIdentifier;
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier] autorelease];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
if(indexPath.row%2==0)
{
UILabel *cellLabel=[[UILabel alloc]initWithFrame:CGRectMake(100, 40, 40, 40)];
cellLabel.text=@"o1";
[cell addSubview:cellLabel];
[cellLabel release];
}
else
{
UILabel *cellLabel1=[[UILabel alloc]initWithFrame:CGRectMake(100, 40, 40, 40)];
cellLabel1.text=@"e1";
[cell addSubview:cellLabel1];
[cellLabel1 release];
UILabel *cellLabel2=[[UILabel alloc]initWithFrame:CGRectMake(150, 40, 40, 40)];
cellLabel2.text=@"e2";
[cell addSubview:cellLabel2];
[cellLabel2 release];
}
}
return cell;
}
答案 3 :(得分:0)
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *MyIdentifier = @"MyIdentifier"; static NSString *MyIdentifier1 = @"MyIdentifier1"; UITableViewCell *cell; if(indexPath.row % 2 != 0) { cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier]; } else { cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier1]; } if(cell == nil) { if(indexPath.row % 2 != 0) { cell=[self reuseTableViewCellWithIdentifier:MyIdentifier withIndexPath:indexPath]; } else { cell=[self reuseTableViewCellWithIdentifier:MyIdentifier1 withIndexPath:indexPath]; } } cell.selectionStyle = UITableViewCellSelectionStyleNone; return cell; } -(UITableViewCell *)reuseTableViewCellWithIdentifier:(NSString *)identifier withIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell=[[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier]autorelease]; if([identifier isEqualToString:@"MyIdentifier"]) { UILabel *l1=[[[UILabel alloc]initWithFrame:CGRectMake(5, 5, 30, 20)]autorelease]; l1.backgroundColor=[UIColor redColor]; [cell.contentView addSubview:l1]; UILabel *l2=[[[UILabel alloc]initWithFrame:CGRectMake(65, 5, 30, 20)]autorelease]; l2.backgroundColor=[UIColor grayColor]; [cell.contentView addSubview:l2]; } else { UILabel *l1=[[[UILabel alloc]initWithFrame:CGRectMake(5, 5, 30, 20)]autorelease]; l1.backgroundColor=[UIColor blueColor]; [cell.contentView addSubview:l1]; } return cell; }
答案 4 :(得分:0)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { if(indexPath.row%2==0) { static NSString *CellIdentifier = @"CustomCell"; CustomCell *cell = (CustomCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil]; for (id currentObject in topLevelObjects) { if ([currentObject isKindOfClass:[UITableViewCell class]]) { cell = (CustomCell *) currentObject; break; } } } cell.capitalLabel.text =[capitals objectAtIndex:indexPath.row]; cell.stateLabel.text = [states objectAtIndex:indexPath.row]; cell.t1.delegate=self; cell.t1.tag=indexPath.row; cell.t1.text=[arrTemp objectAtIndex:indexPath.row]; cell.s1.backgroundColor=[UIColor grayColor]; cell.s1.contentSize=CGSizeMake(1000, 40); return cell; } else { static NSString *CellIdentifier1 = @"CustomCell1"; CustomCell1 *cell1 = (CustomCell1 *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier1]; if (cell1 == nil) { NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell1" owner:self options:nil]; for (id currentObject in topLevelObjects) { if ([currentObject isKindOfClass:[UITableViewCell class]]) { cell1 = (CustomCell1 *) currentObject; break; } } } cell1.l1.text=@"alok"; return cell1; } }
答案 5 :(得分:0)
static NSString *CellIdentifier = @"Cell";
static NSString *CellIdentifierButton = @"CellButton";
UITableViewCell *cell = nil;
if (indexPath.section <=2)
{
if(indexPath.section==2&&indexPath.row==4)
{
cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifierButton];
}
else
{
cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
}
}
if (cell == nil)
{
if (indexPath.section <=2)
{
if(indexPath.section==2&&indexPath.row==4)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifierButton];
UIButton *b1 = [[UIButton alloc]initWithFrame:CGRectMake(200, 10, 300, 80)];
[b1 setBackgroundColor:[UIColor redColor]];
[b1 setTag:501];
[cell.contentView b1];
UIButton * b2 = [[UIButton alloc]initWithFrame:CGRectMake(200, 120, 300, 80)];
[b2 setBackgroundColor:[UIColor redColor]];
[b2 setTag:502];
[cell.contentView b2];
}
else
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(10, 0, 250, 44)];
[label setBackgroundColor:[UIColor clearColor]];
[label setTag:500];
[cell.contentView addSubview:label];
//end for section 1
//for section2
}
//end for section 2
}
}
}
//====setting the values===//
if (indexPath.section ==0)
{
UILabel *label = (UILabel *)[cell.contentView viewWithTag:500];
if (label) {
[label setText:[arr1 objectAtIndex:indexPath.row]];
}
}
if (indexPath.section ==1)
{
UILabel *label = (UILabel *)[cell.contentView viewWithTag:500];
if (label) {
[label setText:[arr2 objectAtIndex:indexPath.row]];
}
}