【问题标题】:How to stop cells from indenting - shouldIndentWhileEditingRowAtIndexPath has no effect如何阻止单元格缩进 - shouldIndentWhileEditingRowAtIndexPath 无效
【发布时间】:2011-10-28 09:07:28
【问题描述】:

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

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

这可能是由于我的设置造成的吗?我跟着this tutorial,我也尝试了像Davyd suggested here 这样的设置,但最后一个不仅仍然缩进我的单元格,而且更糟糕的是,当我按下完成时,单元格被缩进了......我可以' t 获取背景图像以覆盖整个单元格...

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

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

谢谢!

【问题讨论】:

    标签: iphone objective-c uitableview custom-cell


    【解决方案1】:

    经过大量研究并逐个像素尝试,结果证明,我需要使用-(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;
            }
        }
    }
    

    希望有帮助:)

    【讨论】:

      【解决方案2】:

      以上都不适用于我,但确实如此:

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

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

      【讨论】:

        【解决方案3】:

        您是否检查过在您编辑单元格时是否调用了委托方法tableView:shouldIndentWhileEditingRowAtIndexPath:

        我唯一一次使用tableView:shouldIndentWhileEditingRowAtIndexPath: 委托方法 效果很好。

        // Override to prevent indentation of cells in editing mode (in theory)
        - (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath {
            return NO;
        }
        

        【讨论】:

        • shouldIndentWhileEditing 被调用,但这仅适用于分组的 tableViews,我的很简单,必须是:/
        • 我在 iOS 6 上尝试了 shouldIndentWhileEditingRowAtIndexPath 委托方法和一个普通的表格视图,它可以工作!
        【解决方案4】:

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

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

        【讨论】:

        • 我的单元格包含一个按钮和两个标签,但我还为 cell.contentView.backgroundColor 设置了一个图像,它也不应该缩进。我在 IB 的尺寸检查器中尝试了各种启用和禁用红线的组合,但目前都没有达到预期的效果。我错过了正确的组合吗?谢谢。
        • 只是背景图像不起作用,还是标签和按钮也不起作用?我遇到了相反的问题,我有一个自定义布局,我希望它缩进但它没有,并且自动调整大小为我解决了它。
        • 图像、按钮以及标签都会缩进。正如我所说,切换红线没有效果:(我尝试了CustomCell,以及按钮或标签。事实上,它看起来像我的单元格向右缩进,而不是在右侧修剪, 用于显示移动标志。
        【解决方案5】:

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

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

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            【解决方案7】:

            刚刚在 iOS 6 上尝试过。

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

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

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2010-11-17
              • 2015-01-18
              • 2016-04-10
              • 2018-02-04
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-10-26
              相关资源
              最近更新 更多