我在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];
}
} `
答案 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)
之外。