2013-04-27 70 views
-3

单击单元格时,添加到单元格的标签看起来就像附图中所示,为什么?UITableViewCell上的UILabel

http://s23.postimg.org/x4a7ffd7v/Untitled.png

这是代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

{
静态的NSString * CellIdentifier = @ “小区”;

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
} 

int section = [indexPath section]; 
int row = [indexPath row]; 

int rowsInLastSections = 0; 
for (int i = 0; i < section; i++) { 
    rowsInLastSections += [self tableView:tableView numberOfRowsInSection:i]; 
} 

Friend *friend = [friendsArray objectAtIndex:row + rowsInLastSections]; 

[friend setIndexPathInTableView:indexPath]; 

NSString *firstName = [[NSString alloc]initWithFormat:@"%@", [friend firstName]]; 
NSString *lastName = [[NSString alloc]initWithFormat:@"%@", [friend lastName]]; 

UIImageView *profileImageView = [[UIImageView alloc]initWithFrame:CGRectMake(5, 5, 50, 50)]; 
[profileImageView setImageWithURL:[NSURL URLWithString:[friend imageUrl]] placeholderImage:[UIImage imageNamed:@"[email protected]"]]; 

UILabel *firstNameLabel = [[UILabel alloc]initWithFrame:CGRectMake(65, 10, 230, 20)]; 
UILabel *lastNameLabel = [[UILabel alloc]initWithFrame:CGRectMake(65, 35, 230, 20)]; 
[firstNameLabel setText:firstName]; 
firstNameLabel.backgroundColor = table.backgroundColor; 
[lastNameLabel setText:lastName]; 
lastNameLabel.backgroundColor = table.backgroundColor; 

[cell.contentView addSubview:profileImageView]; 
[cell.contentView addSubview:firstNameLabel]; 
[cell.contentView addSubview:lastNameLabel]; 

cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
[cell setSelectionStyle:UITableViewCellSelectionStyleGray]; 

return cell; 

}

+0

请提供更多的细节。一些代码会很好... – atxe 2013-04-27 14:47:54

+3

你应该为各种'UITableViewDelegate'和'UITableViewDataSource'方法发布你的代码。 – jszumski 2013-04-27 14:48:04

+0

这是将子视图添加到单元格的代码:: http://pastie.org/7729414 – assafey 2013-04-27 15:27:00

回答

1

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
} 

添加此代码,

for(UIView *view in cell.subviews){ 
     if([view isMemberOfClass:[UILabel class]]){ 
      [(UILabel *)view removeFromSuperview]; 
     } 
    } 
+0

编辑帖子“首先,我应该说你这样做的方式不好”我该怎么做? – assafey 2013-04-27 15:19:12

+0

我不在didSelectRowAtIndexPath方法中添加uilabels或任何其他组件 – assafey 2013-04-27 15:25:48

+0

我根据您的代码更改了答案,请检查新答案。 – 2013-04-27 16:03:47