如何禁用UITableView选择?
当您在UITableView
点击一行时,该行将突出显示并被选中。 是否可以禁用此功能,因此点击一行什么都不做?
#1楼
从UITableViewDelegate
协议,您可以使用方法willSelectRowAtIndexPath
,如果您不想选择行,则return nil
。
以同样的方式,您可以使用willDeselectRowAtIndexPath
方法,如果您不希望取消选择该行,则return nil
。
#2楼
试试这个
cell.selectionStyle = UITableViewCellSelectionStyleNone;
和
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
您还可以使用interfacebuilder设置选择样式。
#3楼
对我来说,以下工作正常:
tableView.allowsSelection = false
这意味着didSelectRowAt#
根本不起作用。 也就是说,触摸桌子的一排,就这样,绝对不会做任何事情。 (因此,显然,永远不会有选定的动画。)
(注意,如果在单元格上,你有UIButton
或任何其他控件,当然这些控件仍然可以工作。你碰巧在表格单元格上有任何控件,与UITableView允许你“选择一行”的能力完全无关“使用didSelectRowAt#
。)
另一点需要注意的是:当UITableView
处于编辑模式时,这不起作用。 要在编辑模式下限制单元格选择,请使用以下代码:
tableView.allowsSelectionDuringEditing = false
#4楼
从iOS 6.0开始, UITableViewDelegate
有tableView:shouldHighlightRowAtIndexPath:
. (在iOS 文档中阅读它。)
此方法允许您将特定行标记为不可突出(并且隐式,不可选),而无需更改单元格的选择样式,使用userInteractionEnabled = NO
处理单元格的事件处理,或此处记录的任何其他技术。
#5楼
如果您希望选择仅闪光,而不是保持在选定状态,您可以打电话
didSelectRowAtIndexPath
下列
[tableView deselectRowAtIndexPath:indexPath animated:YES];
所以它会闪烁所选状态并恢复。
#6楼
我一直在与这个相当激烈的斗争,在我的UITableViewCell
控制禁止使用userInteractionEnabled
属性。 我有一个3单元静态表用于设置,2有日期,1有一个开/关开关。 在Storyboard / IB中玩完之后,我设法使底部不可选,但是当你点击它时,顶部行之一的选择消失了。 这是我的设置UITableView的WIP图像:
如果点击第3行什么都没发生,选择将保留在第二行。 该功能实际上是Apple日历应用程序的添加事件时间选择屏幕的副本。
代码令人惊讶地兼容,一直到IOS2 = /:
- (NSIndexPath *)tableView: (UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath {if (indexPath.row == 2) {return nil;}return indexPath;
}
这与将选择样式设置为none一起使用,因此单元格不会在触摸事件上闪烁
#7楼
禁用UItableviewcell的突出显示
cell.selectionStyle = UITableViewCellSelectionStyleNone;
并且不应该允许用户与单元格进行交互。
cell.userInteractionEnabled = NO;
#8楼
您还可以通过从检查器窗格中的selection
选项(UITableView属性)中选择NoSelection
来禁用界面构建器本身的行选择,如下图所示
#9楼
你可以用它
cell.selectionStyle = UITableViewCellSelectionStyleNone;
#10楼
虽然这是防止行在选择期间显示突出显示的最佳和最简单的解决方案
cell.selectionStyle = UITableViewCellSelectionStyleNone;
我还想建议偶尔有用的是简单地显示该行已被选中然后将其关闭。 这会提醒用户确认他们打算选择的内容:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {[tableView deselectRowAtIndexPath:indexPath animated:NO];
...
}
#11楼
您所要做的就是使用以下任一方法在UITableViewCell
实例上设置选择样式:
Objective-C的:
cell.selectionStyle = UITableViewCellSelectionStyleNone;
要么
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
斯威夫特2:
cell.selectionStyle = UITableViewCellSelectionStyle.None
Swift 3和4.x:
cell.selectionStyle = .none
此外,请确保您未在表视图委托中实现-tableView:didSelectRowAtIndexPath:
或明确排除您希望在没有操作的情况下执行它的单元格。
更多信息在这里和这里
#12楼
您可以使用 ....
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
#13楼
您还可以将背景颜色设置为Clear以实现与UITableViewCellSelectionStyleNone
相同的效果,以防您不希望/不能使用UITableViewCellSelectionStyleNone
。
您将使用如下代码:
UIView *backgroundColorView = [[UIView alloc] init];
backgroundColorView.backgroundColor = [UIColor clearColor];
backgroundColorView.layer.masksToBounds = YES;
[cell setSelectedBackgroundView: backgroundColorView];
当您为每个单元格添加额外的彩色视图时,这可能会降低您的性能。
#14楼
cell.selectionStyle = UITableViewCellSelectionStyleNone;
#15楼
您可以使用 :
cell.selectionStyle = UITableViewCellSelectionStyleNone;
在UITableView的索引路径方法的行的单元格中。
你也可以使用:
[tableView deselectRowAtIndexPath:indexPath animated:NO];
在tableview didselectrowatindexpath方法。
#16楼
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
[cell setSelected:NO animated:NO];
[cell setHighlighted:NO animated:NO];
快乐的编码!
#17楼
Objective-C的:
下面的代码段禁用突出显示但它也禁用了对
didSelectRowAtIndexPath
的调用。 因此,如果您没有实现didSelectRowAtIndexPath
那么请使用以下方法。 在创建表时应该添加此项。 这将适用于单元格内的按钮和UITextField
。self.tableView.allowsSelection = NO;
下面的代码段禁用突出显示,并且不会禁用对
didSelectRowAtIndexPath
的调用。 在cellForRowAtIndexPath
中将单元格的选择样式设置为“无”cell.selectionStyle = UITableViewCellSelectionStyleNone;
在片段下面禁用单元格上的所有内容。 这将禁用与
buttons
,textfields
的交互:self.tableView.userInteractionEnabled = false;
迅速:
以下是Swift
等同于以上Objective-C
解决方案:
更换第一个解决方案
self.tableView.allowsSelection = false
更换第二种解决方案
cell?.selectionStyle = UITableViewCellSelectionStyle.None
更换第三种解决方案
self.tableView.userInteractionEnabled = false
#18楼
如果有人需要Swift的答案:
cell.selectionStyle = .None
#19楼
您也可以从故事板中进行操作。 单击表视图单元格,然后在“表视图单元格”下的属性检查器中,将“选择”旁边的下拉列表更改为“无”。
#20楼
1-您所要做的就是使用以下任一方法在UITableViewCell
实例上设置选择样式 :
Objective-C的:
cell.selectionStyle = UITableViewCellSelectionStyleNone;
要么
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
斯威夫特2:
cell.selectionStyle = UITableViewCellSelectionStyle.None
斯威夫特3:
cell.selectionStyle = .none
2 - 不要实现 - tableView:didSelectRowAtIndexPath:
在表视图中delegate
或明确排除您希望不执行任何操作的单元格。
3 - 此外,您还可以从故事板中进行操作。 单击表视图单元格,然后在“表视图单元格”下的属性检查器中,将“选择”旁边的下拉列表更改为“无”。
4 - 您可以使用(iOS) Xcode 9,Swift 4.0中的以下代码禁用表格单元格高亮显示
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {let cell = tableView.dequeueReusableCell(withIdentifier: "OpenTbCell") as! OpenTbCellcell.selectionStyle = .nonereturn cell}
#21楼
这是我用的,在cellForRowAtIndexPath
写这段代码:
cell.selectionStyle = UITableViewCellSelectionStyleNone;
#22楼
我正在使用它,这对我有用。
cell?.selectionStyle = UITableViewCellSelectionStyle.None
#23楼
您只需将此代码放入cellForRowAtIndexPath即可
要禁用单元格的选择属性:(在点击单元格时)。
cell.selectionStyle = UITableViewCellSelectionStyle.None
#24楼
在属性检查器的UITableViewCell
的XIB中,将Selection
值设置为None
。
#25楼
SWIFT的固定解决方案3
cell.selectionStyle = .none
#26楼
直接禁用将TableViewCell突出显示到故事板中
#27楼
尝试输入:
cell.selected = NO;
它会在需要时取消选择您的行。
在Swift3中......
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {let r = indexPath.rowprint("clicked .. \(r)")tableView.cellForRow(at: indexPath)?.setSelected(false, animated: true)
}
#28楼
根据我自己的实施经验总结我认为正确的答案:
如果要禁用某些单元格的选择,请使用:
cell.userInteractionEnabled = NO;
除了阻止选择之外,这还会阻止tableView:didSelectRowAtIndexPath:为已设置它的单元格调用。 (感谢Tony Million的回答,谢谢!)
如果您的单元格中有按钮需要单击,则需要改为:
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
你还需要忽略对单元格的任何点击- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
。
如果要禁用整个表的选择,请使用:
tableView.allowsSelection = NO;
(感谢Paulo De Barros,谢谢!)
#29楼
因为我最近阅读了这篇文章,它帮助了我,我想发布另一个答案来巩固所有答案(后代)。
因此,根据您所需的逻辑和/或结果,实际上有5种不同的答案:
1.要禁用蓝色突出显示而不更改单元格的任何其他交互:
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
当我在UITutViewCell中托管UIButton或其他控件时,我使用它,我希望用户能够与控件交互,但不能与单元本身交互。
注意 :正如Tony Million上面提到的,这不会阻止tableView:didSelectRowAtIndexPath:
.我通过简单的“if”语句解决这个问题,通常测试该部分并避免对特定部分采取措施。
我想要测试这样一个单元格的另一种方法是:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {// A case was selected, so push into the CaseDetailViewControllerUITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];if (cell.selectionStyle != UITableViewCellSelectionStyleNone) {// Handle tap code here}
}
2.要对整个表格执行此操作,您可以将上述解决方案应用于表格中的每个单元格,但您也可以这样做:
[tableView setAllowsSelection:NO];
在我的测试中,这仍然允许UITableViewCell
内的控件是交互式的。
3.要使单元格为“只读”,您可以简单地执行此操作:
[cell setUserInteractionEnabled:NO];
4.使整个表格“只读”
[tableView setUserInteractionEnabled:NO];
5.要在运行中确定是否突出显示一个单元格(根据此答案隐式包含选择),您可以实现以下UITableViewDelegate
协议方法:
- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath
#30楼
我们可以写代码
cell.selectionStyle = UITableViewCellSelectionStyleNone;
但是当我们在线上方有自定义单元格xib时 ,会给出警告
自定义单元格xib
我们需要在界面构建器中设置选择样式None
如何禁用UITableView选择?相关推荐
- 如何禁用文本选择突出显示
对于充当按钮的锚(例如,"堆栈溢出"页面顶部的" 问题" ," 标签" ," 用户 "等)或选项卡,是否存在CSS标准方 ...
- css禁用选中文本_使用CSS禁用文本选择突出显示
css禁用选中文本 Introduction: 介绍: Texts are the most fundamental elements of any websites or web pages, th ...
- uitableView 选择跳过后, 跳回 颜色变化 问题
今天遇到这个问题 谁也因此没有满足这方面的需求 今天会见 网上办理登机手续 未找到 好 我只能说自己的问题 但 幸好,kai哥 就攻克了 ! 就是在- (void)tableView:(UITabl ...
- ipad html 禁止放大镜,IOs Cordova长按显示文本选择放大镜即使禁用文本选择,如何删除?...
我有一个非常奇怪的问题.在我的iOS上的cordova应用程序,当我长时间在应用程序的任何地方,我会收到一个弹出的文本选择放大镜. 例: 顶部的气泡被锁定在屏幕的顶部,当我的手指从一侧移到另一边时,按 ...
- css——background、border、margin、float、content、blur(图片模糊)、user-select:none(禁用用户选择复制),border-image
1.background 缩写形式:background:color image repeat 关联方式 position: /* img1在最上面,以此类推 */background: url(~@ ...
- 如何为“选择”框创建占位符?
我正在使用占位符进行文本输入,效果很好. 但是我也想为我的选择框使用一个占位符. 当然,我可以使用以下代码: <select><option value=""&g ...
- android 键盘 能复制,android – 从EditText中禁用软键盘,但仍允许复制/粘贴?
经过几个小时的研究,我终于找到了适用于所有API版本的解决方案.希望这可以节省某人的时间. 如果您正在开发API> = 11,解决方案很简单: 1)在EditText的xml文件中添加以下两个属 ...
- css怎么更改指定字体颜色,CSS-如何更改禁用输入的字体颜色?
CSS-如何更改禁用输入的字体颜色? 我需要更改CSS中禁用的输入元素的样式. 我该如何针对Internet Explorer? 10个解决方案 46 votes 您不能使用Internet Expl ...
- 如何为项目中的单个文件禁用ARC?
我在项目中成功使用了ARC. 但是,我遇到了一些文件(例如,在单元测试和模拟对象中),其中ARC规则现在更加脆弱. 我记得曾经听说有一种方法可以按文件禁用ARC,尽管我一直找不到该选项. 这可能吗? ...
最新文章
- 算一算你的语言价值几何
- Jenkins加Shell实现最简单的持续部署
- stdio.h iostream.h iostream 三者
- h5精准定位_HTML5 地理定位
- 安装.net5.0后怎么在vs里选择_Visual Stdio 2019(或其它版本)怎样全部安装到非系统盘的实现方法(小白版)...
- mysql error 1231_解决ERROR 1231 (42000): Variable 'time_zone' can't
- python序列5位置_Python序列构成的数组
- Codeforces-808D Array Division (multiset 折半???)
- OpenCV-python学习笔记(六)——梯度算子,边缘检测和轮廓提取
- .NET——NPOI操作excel
- css3 rem的用法
- 现在电脑的主流配置_2019~2020电脑配置清单主流配件(下)
- hadoop测试环境完全分布式安装配置
- JS中原型和原型链的详细讲解(附代码示例)以及 new关键字具体做了什么的详细讲解
- GitHub中国区前100名到底是什么样的人?
- weak_ptr介绍
- 九宫格(安卓手机的图形锁有几种解锁图案)
- QML 中如何动态创建组件
- PostgreSQL助力小微企业管理系统变革
- SSRS 2008 冻结首行
热门文章
- getDimension/getDimensionPixelSize/getDimensionPixelOffset()
- Android Jetpack组件之Hilt使用
- Mybatis错误:Parameter 'XXX' not found. Available parameters are [1, 0, param1, param2]
- Android之实现上下左右翻页效果
- 数据算法——Spark的TopN实现
- Zookeeper知识汇总
- SpringSecurity过滤器链汇总
- oracle建表权限问题和JSP连接oracle数据库基本操作
- 喵哈哈村的魔法考试 Round #5 (Div.2) C
- shell基础知识总结