2

我有一个带有自定义单元格的普通(未分组)tableView,当我点击编辑按钮时,单元格缩进。我不希望这样,我希望删除标志就在我的单元格顶部。

我试过 shouldIndentWhileEditingRowAtIndexPath 和 cell.shouldIndentWhileEditin = NO; 以及 cell.indentionLevel = -3,但两者都没有任何效果。知道为什么吗?

这可能是由于我的设置吗?我按照本教程进行操作,并且还尝试了像Davyd 在此处建议的设置,但是最后一个不仅仍然缩进了我的单元格,而且当我按下完成时,由于单元格被缩进了,这使情况变得更糟了..我不能获取背景图像以覆盖整个单元格...

那么,任何人都知道如何阻止普通表格视图中的自定义单元格,同时仍然显示删除和移动标志?

//编辑:顺便说一句,我在 IB 中构建自定义单元格。我可以去掉“编辑时缩进”的复选标记,它不在乎。我可以更改缩进级别和宽度的值,没有效果。如果我更改编辑附件,它会愉快地显示它。希望有帮助..

谢谢!

4

7 回答 7

5

经过大量的研究和逐个像素的尝试,结果证明,我需要使用-(void)layoutSubviews从原始状态“过渡”到原始大小。如果其他人需要这样做,这是我的代码,放在我的 CustomCell米:

- (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;
        }
    }
}

希望有帮助:)

于 2011-12-01T13:49:28.020 回答
3

以上都不适合我,但这确实:

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return UITableViewCellEditingStyleNone;
}

这样你就对 UITableView 说你在编辑模式下不需要任何原生样式,而是你可以自己处理。

于 2014-03-09T17:17:32.203 回答
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;
}
于 2011-10-28T11:30:32.433 回答
1

尝试更改内容视图的自动调整大小掩码或单元格内的元素。缩进是因为当您的单元格进入编辑模式时,内容视图会调整大小以显示附件并且内容会随之移动。

在不知道单元格中的内容的情况下很难给出具体的建议,但您想查看固定的左边距或右边距。

于 2011-10-28T09:53:00.037 回答
0

我有同样的问题。原因是:它们没有缩进,而是自动调整大小。移除按钮显示为单元格的视图(及其子视图)被调整大小。

解决方案是:根据需要在 InterfaceBuilder/Xcode 中设置自定义表格单元的子视图(标签或您放置在其上的任何内容)的自动调整大小行为。

于 2011-11-25T10:33:52.117 回答
0

我刚刚意识到,如果您将 UIView 连接到 backgroundView 插座,它根本不会移动。我认为,结合自动调整大小的标志真的是你所需要的。

于 2012-08-13T06:54:42.163 回答
0

刚刚在 iOS 6 上尝试过。

shouldIndentWhileEditingRowAtIndexPath委托方法现在也适用于普通表视图。

----已编辑-----

好吧,事实证明,它不仅仅缩进allowsMultipleSelection = YES

于 2012-10-22T21:17:14.723 回答