禁用单元格但保持细节附件处于活动状态

Posted

技术标签:

【中文标题】禁用单元格但保持细节附件处于活动状态【英文标题】:Disable cell but leave detail accessory active 【发布时间】:2013-10-07 21:02:23 【问题描述】:

我正在用数据填充UITableViewController,一些创建的单元格需要被禁用,而另一些则留有详细附件按钮。我需要做的是禁用带有细节附件(他们的选择)的那些,但保持此细节按钮处于活动状态以获取一些信息。

【问题讨论】:

【参考方案1】:

扩展mobiletest给出的答案,我做了类似的事情。

我为附件创建了具有披露指示器类型的单元格

cell.accessoryType = UITableViewCellAccessoryNone;
cell.selectionStyle = UITableViewCellSelectionStyleNone;

在 UITableViewControllerDelegate 方法中

- (UITableViewCell*) tableView: (UITableView*) tableView cellForRowAtIndexPath: (NSIndexPath*) indexPath

我在每个单元格上创建了​​一个自定义按钮。为了准确识别选择了哪个单元格上的哪个按钮,SO 上的这个answer 帮助了我。

你可以选择不改变单元格的selectionStyle,但是我建议你这样做,这样app看起来更好,并且单元格不会显示任何提示单元格可以被选中的东西,这样会更容易在用户的可用性条款。


或者,您可以检查方法

- (void) tableView: (UITableView*) tableView didSelectRowAtIndexPath: (NSIndexPath*) indexPath

您可以选择单元格并检查单元格的附件类型并放置您的逻辑。

UITableViewCell *cell = (UITableViewCell *)[(UITableView *)self.view cellForRowAtIndexPath:indexPath];
if (cell.accessoryType == UITableViewCellAccessoryDisclosureIndicator) 
 
//Your logic here 

但这意味着您的整个单元格都可以选择(如果不选择,则披露按钮将不起作用),在这种情况下,这意味着您无法自定义您的披露按钮。此外,由于您的整个单元格都是可选的,只要用户单击单元格,您的逻辑也会运行,从问题来看,这听起来不像您想要的功能,但我可能错了。 :)

看看哪个适合你。希望这会有所帮助!

【讨论】:

【参考方案2】:

您是要从某些行中隐藏详细附件按钮还是禁用没有详细附件按钮的功能。 要禁用该功能,您可以在 didSelectRowAtIndexPath 中编写代码。检查是否有详细的附件按钮,如果有则什么都不做。

【讨论】:

以上是关于禁用单元格但保持细节附件处于活动状态的主要内容,如果未能解决你的问题,请参考以下文章

单元格处于活动状态时突出显示整行

openpyxl将数字格式设置为单元格但不起作用

保存 UITableView 单元格附件的状态?

在 UISearchController 处于活动状态时选择 tableview 中的单元格,不显示下一个视图?

在我将内容滚动出屏幕之前,单元格约束不会处于活动状态 - 自动维度表视图 - Swift 5

在搜索栏处于活动状态时删除表格视图中的单元格 - CoreData 错误