如何禁用UITableView的节索引的用户交互?

时间:2014-07-24 20:42:53

标签: ios objective-c uitableview

我已经在我的应用中实现了一个分区索引,表格视图右侧的字母可以快速跳转到某个部分。我希望在某些情况下禁用用户与该部分索引的交互,但UITableView上没有允许直接访问部分索引的属性。

如何禁用部分索引的用户交互?

我已禁用与表本身的交互,因此您无法滚动或点按任何单元格,但这仍然允许与部分索引进行交互,因此在点击部分图标时它将滚动到每个部分。

self.tableView.userInteractionEnabled = NO;

如果无法禁用与段索引本身的交互,是否有办法阻止更改表的滚动位置?这正是我想要获得的。

3 个答案:

答案 0 :(得分:1)

我找到了解决方案。

让BOOL知道什么时候应该禁用部分索引。

然后在tableView:sectionForSectionIndexTitle:atIndex: return -1中,以防止在点击索引时滚动。

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index
{
    if (self.tableViewIsDisabled) {
        return -1;
    }
    ...
}

答案 1 :(得分:1)

作为替代方案,如果您希望允许滚动 - 这样用户可以查看其中的内容 - 但是阻止他们进行选择等,您可以执行以下操作:

-(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (self.tableViewIsDidabled)
        return nil;
    else
        return indexPath;
}

并将sectionForSectionIndexTitle设置为nil。

答案 2 :(得分:0)

UITableView *tab;

mm禁用滚动..

tab.scrollEnabled = NO;

如果你想在某些情况下使用它.. 你可以尝试一个强大的..

if(...)
tab.scrollEnabled = NO;