UITableView 多选,预选项

Posted

技术标签:

【中文标题】UITableView 多选,预选项【英文标题】:UITableView multipleselection, pre-selected items 【发布时间】:2012-03-07 09:47:28 【问题描述】:

我正在开发一个 ios 5 项目,我正在使用表格视图来选择将添加到集合中的项目。 我正确地将 AllowsMultipleSelectionDuringEditing 设置为 YES,让子弹位于左侧,contentView 缩进。

现在,我的问题是我有一个用户在进入编辑模式时应该看到的预选项目列表。我查看了文档,但我没有找到任何关于它的方法,以便在启用多选的情况下进入编辑模式时预选索引路径列表。 Apple 是否提供了一种方法来预先选择一定数量的项目,还是我应该自己开发这个功能?

【问题讨论】:

【参考方案1】:

好的,我发现了如何做到这一点,并且找到了一种很好且优雅的方法,它比异常简单:

UITableView 具有选择一行的方法selectRowAtIndexPath:animated:scrollPosition:。 完成我正在寻找的最佳方法是创建 NSSetNSIndexPaths 并在将 UITableView 设置为编辑模式后立即迭代集合并逐个选择单元格。

例如这样:

- (NSArray *)_preselectedIndexPaths 

    NSMutableSet *preselectedItems = [NSMutableSet set];
    NSUInteger s = 0, r = 0;
    for (NSArray *section in self.data) 
        for (id item in section) 
            if ([item shouldBePreselected])  //this is the condition
                [preselectedItems addObject:[NSIndexPath indexPathForRow:r inSection:s]];
            
            r++;
        
        s++;
    

    return [preselectedItems allObjects];

然后,在表格视图中选择项目:

[self.tableView setEditing:![self.tableView isEditing] animated:YES];

for (NSIndexPath *ip in [self _preselectedIndexPaths]) 
    
       [self.tableView selectRowAtIndexPath:ip 
                                   animated:YES 
                             scrollPosition:UITableViewScrollPositionNone];
    

我希望这对其他人有帮助。

【讨论】:

以上是关于UITableView 多选,预选项的主要内容,如果未能解决你的问题,请参考以下文章

iOS UITableView的多选

不调用UITableView Delegate

UITableView 多选和滑动操作

UITableView 多选

不要删除 UITable 的第一行

iOS——UITableView单选模式,多选模式,单选多选混合模式