自定义UItableViewCell标签重叠

时间:2014-05-19 11:15:28

标签: ios uitableview storyboard

使用UITableView并发现cells未正确出列。我使用storyboard创建了原型单元格,并且在单元格上有UIlabel

  - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"cell";
    UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell==nil) {
    cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
   }
     UILabel*textLabel = (UILabel*)[cell viewWithTag:11];
    textLabel.font=[UIFont fontWithName:@"MyUnderwood" size:16];
    textLabel.text = [_tableLabelArray objectAtIndex:indexPath.row];

return cell;


}

以下是我在滚动UITableView

时获得的TableView图片

enter image description here

4 个答案:

答案 0 :(得分:0)

您未在CellForRowAtIndexPath中使用自定义单元格。代码看起来很好,只是UITableViewCell使自定义单元格出列如下:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"cell"; //needs to be the identifier you defined in story boards
    YourCustomCell *cell=[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell==nil) {
    cell=[[YourCustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
   }
     UILabel*textLabel = (UILabel*)[cell viewWithTag:11];
    textLabel.font=[UIFont fontWithName:@"MyUnderwood" size:16];
    textLabel.text = [_tableLabelArray objectAtIndex:indexPath.row];

return cell;


}

然后你需要创建UITableViewCell的子类并将其命名为YourCustomCell并链接所有IBOutlet对象,如标签等。将这行代码放在.h文件#import YourCustomCell.h之上,然后只需访问所有该单元格的属性,如cell.textLabel,而不是创建标签并将其投射到带标签的视图。

答案 1 :(得分:0)

这可能只是一个小错误。尝试使用不同的标记值,或验证原型单元格中使用的值。

答案 2 :(得分:0)

我通过使用“nil”而不是cellIdentifier

解决了这个问题

例如:    而不是

UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

使用此

UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:nil];

它为我做了诀窍

答案 3 :(得分:-1)

您只需勾选故事板中标签的“清除图形上下文”属性。