如何在不同的段上维护CollectionView的状态(Tab)

时间:2019-05-30 12:39:13

标签: ios uicollectionview

我正在将集合视图流布局添加为分段控件中的子视图。该细分被归类为All, New, Used。 我的问题是如何在不同的细分中维护集合视图的状态。

我正在进行API调用以在All, New, Used段上加载数据

另外,每次切换标签时,我都会调用[collectionView reloadData],它会重新加载集合视图,但不完全是我在该特定段中之前离开的位置

例如,在All段中,我滚动了10-15个项目,然后我切换到New段,并滚动了3个项目,现在,如果我再次将Tab键切换到All段,则位置All的细分受众群也进入了第三位置

如何解决。感谢您耐心阅读。任何帮助都会对我有很大帮助。

这是我用于切换细分的示例代码

-(IBAction)changeSeg:(id)sender{
    [collectionView reloadData];

    if(segmentedControl.selectedSegmentIndex == 0){
atScrollPosition:UICollectionViewScrollPositionNone animated:false];
        typeFlag = 0;
        if ([inventoryDetails count] == 0 && totalInventoryCountForAll != 0) {
            [self loadMore];
        } else if (totalInventoryCountForAll == 0) {
            [self setNoCarVisibility: true];
        }
    }
    else if(segmentedControl.selectedSegmentIndex == 1){
        typeFlag = 1;
        if ([newInventory count] == 0 && totalInventoryCountForNew != 0) {
            [self loadMore];
        } else if (totalInventoryCountForNew == 0) {
            [self setNoCarVisibility: true];
        }
    }
    else if(segmentedControl.selectedSegmentIndex == 2){
        typeFlag = 2;
        if([usedInventory count] == 0 && totalInventoryCountForUsed != 0){
            [self loadMore];
        } else if (totalInventoryCountForUsed == 0) {
            [self setNoCarVisibility: true];
        }
    }

} 

2 个答案:

答案 0 :(得分:0)

在reloadData之后将选项卡scrolltoIndepath切换时,可能可以保存当前可视单元格的索引路径。 希望对您有帮助。...

修改 当前索引路径分别用于3个标签。因此,将不会有一个变量,而是每个选项卡都有3个indexpath变量,一旦选项卡切换,将管理相应var中的值,然后以相同的方式重新命名。

例如currentAllIndexpath,currentNewIndexpath等。

答案 1 :(得分:0)

所以,最终我得到了如下的快速解决方案:

1)。我为所有,新建,二手创建了三个集合视图

2)。为所有三个集合视图创建了必需的出口连接,数据源和委托

3)。诀窍是隐藏并显示当前选定细分的集合视图。

4)。但是我在这里面临一个小问题。第一个“集合视图”(在我的情况下为“所有选项卡”)必须是“界面”构建器上的最后一个项目,然后只有在最初加载集合视图时才会显示。

5)。每当我切换选项卡时,我都会隐藏其他两个集合视图并显示当前选择的选项卡的“集合”视图。

这可能不是正确的解决方案。但是暂时我做到了。