如何禁用 UITableView 的部分索引的用户交互?
Posted
技术标签:
【中文标题】如何禁用 UITableView 的部分索引的用户交互?【英文标题】:How to disable user interaction of section index for UITableView? 【发布时间】:2014-07-24 20:42:53 【问题描述】:我已经在我的应用程序中实现了一个部分索引,表格视图右侧的字母允许快速跳转到一个部分。我想在某些情况下禁用用户与该部分索引的交互,但UITableView
上没有允许直接访问该部分索引的属性。
如何禁用部分索引的用户交互?
我已禁用与表格本身的交互,因此您无法滚动或点击任何单元格,但这仍然允许与部分索引进行交互,因此它会在点击部分图标时滚动到每个部分。
self.tableView.userInteractionEnabled = NO;
如果无法禁用与节索引本身的交互,有没有办法防止更改表格的滚动位置?这正是我想要得到的。
【问题讨论】:
你是指右边的索引还是部分索引标题 屏幕最右侧的单字符按钮。 看看这个***.com/questions/5987399/…我会研究更多 节索引是另一个UITableView
吗?
你不能通过在sectionForSectionIndexTitle
中返回nil
来显示它。当我的行数少于屏幕高度并且不需要显示索引时,我会这样做。
【参考方案1】:
作为替代方案,如果您希望允许滚动 - 以便用户可以看到其中的内容 - 但阻止他们进行选择等,您可以改为执行以下操作:
-(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
if (self.tableViewIsDidabled)
return nil;
else
return indexPath;
并且,将 sectionForSectionIndexTitle 设置为 nil。
【讨论】:
谢谢。虽然我不希望这种行为,但也许其他人会发现您的答案很有用。 :)【参考方案2】:我找到了解决办法。
保留 BOOL 以了解何时应禁用节索引。
然后在tableView:sectionForSectionIndexTitle:atIndex:
中只需return -1
以防止在点击索引时滚动。
- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index
if (self.tableViewIsDisabled)
return -1;
...
【讨论】:
【参考方案3】:UITableView *tab;
mm 禁用滚动..
tab.scrollEnabled = NO;
如果你想在某些情况下使用它.. 你可以试试强大的..
if(...)
tab.scrollEnabled = NO;
【讨论】:
不幸的是,将scrollEnabled
设置为NO
并不能阻止跳转到具有索引的不同部分。以上是关于如何禁用 UITableView 的部分索引的用户交互?的主要内容,如果未能解决你的问题,请参考以下文章