UITableView设置cell为不可选?

本文选自StackOverflow(简称:SOF)精选问答汇总系列文章之一,本系列文章将为读者分享国外最优质的精彩问与答,供读者学习和了解国外最新技术。本文将为读者讲解UITableView如何设置单元格属性为不可选?

问题:

Mugunth

怎样才能设置UITableView的单元格属性为不可选择。我不想看到用户选择单元格时显示蓝色选择区域。

答案:

Daniel Dickison

把表格单元格selectionStyle的属性设置为UITableViewCellSelectionStyleNone.

那会避免单元格高亮,也可以在tableView:didSelectRowAtIndexPath:里检查属性。

Sebastian Celis

为了彻底避免UITableViewCell选择,让UITableViewDelegate实现tableView:willSelectRowAtIndexPath:。如果你不希望选中行,从那个函数可以返回nil

- (NSIndexPath *)tableView:(UITableView *)tv willSelectRowAtIndexPath:(NSIndexPath *)path
{
    //根据 NSIndexPath判定行是否可选。

    if (rowIsSelectable)
    {
        return path;
    }

    return nil;
}

hanumanDev

用这个:


1

cell.selectionStyle = UITableViewCellSelectionStyleNone;

JOM

我也遇到过这个问题,几乎试了所有提到的方法。摆脱选择单元格时出现蓝色显示的绝招是加上下面这一行:


1

self.myTableView.allowsSelection = NO;

不清楚是这一行,还是结合所有东西才实现的,但是总体来看蓝色的显示不会再出现了,哈哈!

zekel

另一种方法是在UITableViewCell添加几个分类函数。相对于Sebastians的回答(虽然也很棒),我更喜欢这个。因为我在建立我自己的表格,这或许对某些人有帮助。

- (void)setSelectable:(BOOL)enabled {
    [self setSelectionStyle:UITableViewCellSelectionStyleNone];
    [self setUserInteractionEnabled:enabled];
}

- (BOOL)isSelectable {
    BOOL disabled = [self selectionStyle]==UITableViewCellSelectionStyleNone &&
                     [self isUserInteractionEnabled];
    return ! disabled;
}

Rob Bonner

设置cell.userinteractionenabled= FALSE;

ryanday

苹果说在didSelectRowAtIndexPath里首先要做的是取消选择的行。


1

[tableView deselectRowAtIndexPath:[tableView indexPathForSelectedRow] animated:NO];

然后可以修改AccessoryType为复选标记,或者什么都不是。所以当你进入idSelectRowAtIndexPath你可以取消选择行,但是如果不是为了被选中,那就不需要检查。

Table View Programming Guide

Jay

如果你在界面生成器里设计了单元格,你可以通过‘User Interaction Enabled‘ 为 tableViewCell去除复选框做到这一点。

原文链接:UITableView Setting some cells as “unselectable”

文章选自StackOverFlow社区,鉴于其内容对于开发者有所帮助,现将文章翻译于此,供大家参考及学习。9Tech将每日持续更新,读者可点击StackOverflow(简称:SOF)精选问答汇总,查看全部译文内容。同时,我们也招募志同道合的技术朋友共同翻译,造福大家!报名请发邮件至zhangqi_wj#cyou-inc.com。(#换成@

http://ios.9tech.cn/news/2013/1129/38980.html

UITableView设置cell为不可选?

时间: 2024-11-05 13:41:28

UITableView设置cell为不可选?的相关文章

UITableView设置cell的separator 分割线

1.去除UITableView空白的多余的分割线 self.myTableview.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero]; 2.设置分割线的位置 方法一: 在willDisplayCell上增加如下代码 - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSInd

UITableView 设置cell选中状态的问题 (右边有对号)

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{    static NSString *[email protected]"ReportTableViewCell";    ReportTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:iden

几种设置UITableView的cell动态高度的方法

1.UITableView加载的顺序是先得到表的行的高度,也就是先调用heightForRowAtIndexPath方法,然后再调用cellForRowAtIndexPath,所以我们有两个办法实现自定义cell高度(解决不同section的不同行高问题). 一:改变它的加载顺序,或者说白了就是计算好cell高度后,再次让它加载heightForRowAtIndexPath方法: 二:直接在heightForRowAtIndexPath计算,做判断,直接返回对应的高度. 以下是第一种方法的实例:

UITableView中cell边框和背景设置最佳方案

UITableView是iOS开发中最常用的视图控件,在平常用的iOS App中大部分都用到了UITableView. 需求很简单,就是在一个UITableView里面实现一个不一样的UITableViewCell,如下图里的“切换账号”按钮 正常情况下grouped样式(UITableViewStyleGrouped)UITableViewCell都是有边框的,所以如果只是用addSubView添加一个按钮的话,就会有边框在外面,不符合要求,也想过用一个大的图片,把这个cell给盖住,但是感觉

IOS UItableview UIcollectionview cell高度自适应

1.tableviewcell 高度自适应 主要方法: 计算cell高度[cell.contentview systemLayoutSizeFittingSize:UILayoutFittingCompressedSize]; // NSLayoutConstraint 使用条件 添加相对约束 ios 7.0 cell 高度计算修改: - (CGFloat)tableView:(UITableView )tableView estimatedHeightForRowAtIndexPath:(NS

iOS开发项目篇—50设置cell的背景

iOS开发项目篇—50设置cell的背景 一.简单说明 当前样式: 1.去掉分隔线 2.设置背景图片(新浪提供了四种图片,底部的图片有阴影) cell的四种背景图 问题:cell怎么知道自己当前是处在第几组的第几行? 在自定义cell中提供一个方法,共外界传递当前的组和行 YYCommonCell.h文件 1 // 2 // YYCommonCell.h 3 // 4 5 #import <Foundation/Foundation.h> 6 @class YYCommonItem; 7 @i

IOS 根据cell内容设置cell的高度

这里要涉及到tableview 的两个方法 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 和 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 我们要清楚这两个方法的调用顺序,先heightForRo

iOS开发之UITableView及cell重用

1.UITanleview有的两种风格 一种是Plain,一种是Grouped,可以从这里设置风格: 他们样式分别如下: Plain: Grouped: 2.tableView展示数据的过程: (1)首先,控制器要遵守UITableViewDataSource协议 @interface ViewController () <UITableViewDataSource> (2)调用数据源的下面方法得知一共有多少组数据 - (NSInteger)numberOfSectionsInTableVie

纯代码实现自定义UITableView的cell

纯代码实现自定义UITableView的cell 新建一个继承自UITableViewCell的类 重写initWithStyle:reuseIdentifier:方法,在里面实现: 添加所有需要显示的子控件(不需要设置子控件的数据和frame,子控件要添加到contentView中) 进行子控件一次性的属性设置(有些属性只需要设置一次, 比如字体\固定的图片) BNPSettingCell.h文件: /*本代码实现自定义cell的分隔线*/ #import <UIKit/UIKit.h> @