【问题标题】:How to disable user interaction of section index for UITableView?如何禁用 UITableView 的部分索引的用户交互?
【发布时间】:2014-07-24 20:42:53
【问题描述】:

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

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

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

self.tableView.userInteractionEnabled = NO;

如果无法禁用与节索引本身的交互,有没有办法防止更改表格的滚动位置?这正是我想要得到的。

【问题讨论】:

  • 你是指右边的索引还是部分索引标题
  • 屏幕最右侧的单字符按钮。
  • 看看这个stackoverflow.com/questions/5987399/…我会研究更多
  • 节索引是另一个UITableView吗?
  • 你不能通过在sectionForSectionIndexTitle中返回nil来显示它。当我的行数少于屏幕高度并且不需要显示索引时,我会这样做。

标签: ios objective-c uitableview


【解决方案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 并不能阻止跳转到具有索引的不同部分。
    猜你喜欢
    • 2010-11-24
    • 2019-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-03
    • 1970-01-01
    相关资源
    最近更新 更多