我有一个带有自定义单元格的普通(未分组)tableView,当我点击“编辑”按钮时,单元格缩进。我不希望这样,我希望删除标志位于我的单元格顶部。
我尝试了shouldIndentWhileEditingRowAtIndexPath以及cell.shouldIndentWhileEditin = NO;以及cell.indentionLevel = -3,但两者都没有任何效果。知道为什么吗?
这可能是由于我的设置?我跟着this tutorial,我也尝试了Davyd suggested here这样的设置,但最后一次不仅仅是缩进我的细胞,它更糟糕,因为细胞缩进,当我按下完成时...我无法得到覆盖整个细胞的背景图像......
那么,任何人都知道如何停止普通桌面视图中的自定义单元格,同时仍显示删除和移动标志?
//编辑: 顺便说一句,我在IB中构建自定义单元格。我可以拿走“编辑时缩进”的复选标记,它并不关心。我可以改变压痕水平和宽度的值,没有效果。如果我更改编辑附件,它会愉快地显示它。 希望有所帮助..
谢谢!
答案 0 :(得分:5)
经过大量的研究并逐个像素地尝试,结果证明,我需要使用-(void)layoutSubviews
从原始状态“转换”到原始状态。如果其他人需要这样做,这是我的代码,放在我的CustomCell.m中:
- (void)willTransitionToState:(UITableViewCellStateMask)aState
{
[super willTransitionToState:aState];
self.state = aState;
}
- (void)layoutSubviews
{
[super layoutSubviews];
// no indent in edit mode
self.contentView.frame = CGRectMake(0,
self.contentView.frame.origin.y,
self.contentView.frame.size.width,
self.contentView.frame.size.height);
if (self.editing )
{
NSLog(@"subview");
float indentPoints = self.indentationLevel * self.indentationWidth;
switch (state) {
case 3:
self.contentView.frame = CGRectMake(indentPoints,
self.contentView.frame.origin.y,
self.contentView.frame.size.width +124,// - indentPoints,
self.contentView.frame.size.height);
break;
case 2:
// swipe action
self.contentView.frame = CGRectMake(indentPoints,
self.contentView.frame.origin.y,
self.contentView.frame.size.width +75,// - indentPoints,
self.contentView.frame.size.height);
break;
default:
// state == 1, hit edit button
self.contentView.frame = CGRectMake(indentPoints,
self.contentView.frame.origin.y,
self.contentView.frame.size.width +80,// - indentPoints,
self.contentView.frame.size.height);
break;
}
}
}
希望有所帮助:)
答案 1 :(得分:3)
以上都不适用于我,但确实如此:
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
return UITableViewCellEditingStyleNone;
}
这样你对UITableView的说法就是你在编辑模式下不想要任何原生样式,而是你可以自己处理它。
答案 2 :(得分:2)
您是否检查过编辑单元格时是否正在调用委托方法tableView:shouldIndentWhileEditingRowAtIndexPath:
?
我唯一一次使用tableView:shouldIndentWhileEditingRowAtIndexPath:
委托方法
它运作良好。
// Override to prevent indentation of cells in editing mode (in theory)
- (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath {
return NO;
}
答案 3 :(得分:1)
尝试更改内容视图的自动调整遮罩或单元格内的元素。缩进是因为当您的单元格进入编辑模式时,将调整内容视图的大小以显示附件,并且内容随之移动。
如果不知道细胞中的含量,很难给出具体的建议,但是你想看看固定的左边距或右边距。
答案 4 :(得分:0)
我遇到了同样的问题。原因是:它们没有缩进,而是自动调整大小。显示删除按钮,调整单元格视图(及其子视图)的大小。
解决方案是:根据需要在InterfaceBuilder / Xcode中设置自定义表格单元格的子视图(标签或放置在其上的任何内容)的自动调整行为。
答案 5 :(得分:0)
我刚刚意识到如果你将UIView连接到backgroundView插座,它根本不会移动。我认为,结合自动化标志就是你所需要的。
答案 6 :(得分:0)
在iOS 6上试过这个。
shouldIndentWhileEditingRowAtIndexPath
委托方法现在也适用于普通表视图。
---- -----已编辑
嗯,事实证明,只有在allowsMultipleSelection = YES