【问题标题】:Can I disable the UITableView selection of the individual cell?我可以禁用单个单元格的 UITableView 选择吗?
【发布时间】:2013-03-10 15:32:06
【问题描述】:

当您点击UITableView 中的一行时,该行会突出显示并被选中。是否可以禁用此功能,以便点击一行什么都不做?

【问题讨论】:

标签: ios


【解决方案1】:

您可以简单地为 OBJ C 执行此操作:

 cell.selectionStyle = UITableViewCellSelectionStyleNone;

【讨论】:

    【解决方案2】:

    对于 Swift 4

    cell.selectionStyle = UITableViewCell.SelectionStyle.none
    

    【讨论】:

      【解决方案3】:

      这是针对您有一个自定义单元格的情况,但我在寻找答案时发现了这个问题,所以我想我会把它留在这里以防它帮助其他人.


      转到您的自定义单元格,并在 awakeFromNib 方法中将 selectionStyle 设置为 .none

      override func awakeFromNib() {
          super.awakeFromNib()
      
          // disable selection
          selectionStyle = .none;
      }
      

      如果您在多个UITableViews 中使用此自定义单元格,您只需在自定义单元格中设置一次,而不是在您使用的每个UITableView 上设置一次:)

      【讨论】:

        【解决方案4】:

        接受的答案对我不起作用。这个问题让我抓狂了一阵子,因为当下一个视图加载时,它看起来像是任何选择的“小故障”..

        我的解决方案:我必须转到实际 TableViewCell(我构建的自定义单元格)的 .xib 文件选择单元格并选择 CellView。 (确保选择单元格,而不是其中的子视图。它会变成蓝色,如图所示)。在左侧单击“选择”->“无”。这应该与使用代码完全相同,但由于某种原因它不起作用......

        【讨论】:

          【解决方案5】:

          对于 Swift 3:

          cell.selectionStyle = UITableViewCellSelectionStyle.none
          

          【讨论】:

            【解决方案6】:
            cell.selectionStyle = UITableViewCellSelectionStyleNone;
            

            [cell setSelectionStyle:UITableViewCellSelectionStyleNone];

            此外,请确保您要么不在 table view delegate 中实现 -tableView:didSelectRowAtIndexPath:,要么明确排除您不希望执行的单元格。

            【讨论】:

              【解决方案7】:

              如果您想停止突出显示,请使用以下代码:您想要的值为 19

              - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
              
              {
              if(indexpath.row == '19')
                  cell.selectionStyle = UITableViewCellSelectionStyleNone;
              else
              cell.selectionStyle = UITableViewCellSelectionStyleGray;
              
              }
              

              但是,如果你想控制单元格的选择

              - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
              
              if(indexpath.row == '19')
              [tableView deselectRowAtIndexPath:indexPath animated:NO];
              
              }
              

              【讨论】:

                【解决方案8】:
                cell.selectionStyle = UITableViewCellSelectionStyleNone;
                

                【讨论】:

                  【解决方案9】:

                  实现UITableViewtableView:willSelectRowAtIndexPath:委托方法并返回nil。从此方法返回nil告诉表视图不要选择行,因此tableView:didSelectRowAtIndexPath:方法将不会被调用。但是这样做并不会阻止突出显示行。要禁用对行设置单元格选择样式的突出显示效果到UITableViewCellSelectionStyleNone,如上述答案中所述。

                  【讨论】:

                    【解决方案10】:

                    刚刚设置:

                    cell.selectionStyle = UITableViewCellSelectionStyleNone;
                    

                    【讨论】:

                      猜你喜欢
                      • 2014-12-07
                      • 2023-03-12
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2011-09-26
                      • 2012-01-16
                      • 2011-01-01
                      相关资源
                      最近更新 更多