我在使用自定义UITableViewCell
的滑动删除按钮时遇到问题。当我滑动它时,删除按钮位于单元格中的文本下方。您可以在下面看到我正在使用的图像和代码。
注意:我在xib中绘制tableviewcell。
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
// Return YES if you want the specified item to be editable.
return YES;
}
// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
//add code here for when you hit delete
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"HareketCell";
HareketCell *cell = (HareketCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"HareketCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
[cell.lblDakika setText:[NSString stringWithFormat:@"%@%@", [[arrProgramim objectAtIndex:indexPath.row]valueForKey:@"dakika"], @" dk"]];
[cell.imgThumbnail setImage:[UIImage imageNamed:@"most_harita_icon.png"]];
return cell;
}
答案 0 :(得分:7)
这是因为您没有将UILabel
添加为contentView
UITableViewCell
的子视图,而是将其添加为UITableViewCell
本身的子视图。
如果您要为UITableViewCell
创建子类并向其添加子视图,则应始终将其添加到单元格的contentView
内。
这是来自Apple的UITableViewCell文档:
如果您想超越预定义的样式,可以将子视图添加到单元格的 contentView 属性。
如果您这样做,iOS会自动调整contentView内的所有内容,以显示删除按钮并且没有任何重叠。
<强>更新强>
从下面的评论中,单元格是在单独的.xib上创建的,因此标签已经是单元格contentView
的子视图
问题是在-tableView:cellForRowAtIndexPath:
中加载NIB。例如,您必须事先在-viewDidLoad
中在表视图上注册NIB。像这样:
- (void)viewDidLoad {
// Assuming the xib is named HareketCell.xib
UINib *nib = [UINib nibWithNibName:@"HareketCell" bundle:nil];
[self.tableView registerNib:nib forCellReuseIdentifier:@"HareketCell"];
}
现在,为此改变-tableView:cellForRowAtIndexPath:
:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"HareketCell";
HareketCell *cell = (HareketCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
[cell.lblDakika setText:[NSString stringWithFormat:@"%@%@", [[arrProgramim objectAtIndex:indexPath.row]valueForKey:@"dakika"], @" dk"]];
[cell.imgThumbnail setImage:[UIImage imageNamed:@"most_harita_icon.png"]];
return cell;
}
您看,如果您事先注册,-dequeueReusableCellWithIdentifier
已自动为您加载NIB。
答案 1 :(得分:0)
我认为这可能是因为你的标签太长了...保持你的标签短,然后尝试..我认为在你的标签短,你没有看到删除按钮上的标签重叠。如果您无法找到答案,您可以随时使用名为SWTableViewCell的第三方库,可在此处找到https://github.com/CEWendel/SWTableViewCell