如何禁用除UITableView前3个单元格之外的所有单元格?
如果选择了禁用的单元格之一,则返回nil:
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if ( indexPath.row >= 3 ) {
[[self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:2 inSection:0]] setAlpha:0.5];
return nil;
}
return indexPath; }
**如何使禁用的单元格“可见”?**此方法有效,但仅在启动时有效,因为滚动时每个单元格的indexPath都会更改(重用单元格):
for(int i = 3; i <= 100; i++) {
[[self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]] setAlpha:0.5];
}
3条答案
按热度按时间ctrmrzij1#
可以通过设置selectionStyle属性禁用单元格,请参见下面的代码:
禁用单元格选择的另一种方法是禁用单元格的用户交互。请参见下面的代码:
好好享受吧。:)
xzv2uavs2#
最好在
tableView:cellForRowAtIndexPath:
中设置禁用单元格的不透明度。正如@Parcs在their answer中正确指出的那样,您也可以在那里将禁用单元格的userInteractionEnabled
设置为NO。您可以忽略
tableView:didSelectRowAtIndexPath:
中不活动单元格上的点击。iszxjhcz3#
因为另一个答案提供的代码已经过时了,只显示了它是如何在obj-c中完成的,这里有一个快速的解决方案。
要禁用单元格,需要将
UITableViewCell
的isUserInteractionEnabled
标志设置为false。对于
UITableViewCell
的子类,您可能还希望更改现在禁用的单元格的外观。您可以通过重写属性来实现此目的,以便在设置标志时运行其他代码。