首页 > 代码库 > UITableView设置cell为不可选?

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