在表视图中,滚动浏览tableview时,标签与其他文本重叠。

时间:2013-11-07 05:20:05

标签: ios label tableview

After Scrolling labels are overlapped

Before scrolling through tableview

我在tableview中添加了自定义标签。但当我滚动它看起来像给定的图片。

我也在添加代码。 ` - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

if ([segue.identifier isEqualToString:@"DetailPlacePage"]) {
    NSIndexPath *indexPath = [self.placeTableViewController indexPathForSelectedRow];
    NomadPlaceDetailViewController *placedetailcontroller = segue.destinationViewController;
    placedetailcontroller.myDictionary = [self.placeArray objectAtIndex:indexPath.row];
}

} `

3 个答案:

答案 0 :(得分:0)

这是因为您的小区标识符尝试此代码。希望这可以帮到你。

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

static NSString *CellIdentifier = nil;

   UITableViewCell *cell = (UITableViewCell*) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

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

}

答案 1 :(得分:0)

当您使用dequeueReusableCellWithIdentifier时:如果您要在单元格中添加其他子视图,则最佳做法是重复使用它的子视图。

你可以编写你的cellForRowAtIndexPath,如下所示:

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

    static NSString *CellIdentifier = @"CellIdentifier";

    UITableViewCell *cell = (UITableViewCell*) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    UITextField *myView;

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

        myView = [[UITextField alloc] init];  // Set frame as required
        myView.tag = indexPath.row;
        [cell.contentView addSubview:myView];
    }

    myView = [cell.contentView viewWithTag:indexPath.row];
    myView.text = @"YourText";
   return cell;

}

这里发生的事情是,当单元格为myView时,它只会添加nil一次,之后会重复使用先前添加的myView来设置文本,因此myView将不会添加了多次,解决了问题。

答案 2 :(得分:-1)

这是因为您初始化并添加了if(cell == nil)条件之外的标签。因此,每次滚动表视图时,都会添加用于添加标签和创建新标签的代码。所以只需将它们置于if(cell == nil)条件之内即可。只有数据显示部分应放在if(cell == nil)之外。