在 UICollectionView 的开头插入部分
Insert sections at the beginning of UICollectionView
我想在 UICollectionView
中添加一些部分。 insertSections
索引为零对我不起作用。所以我的想法是在末尾insertSections
然后用moveSection:toSection:
把元素从末尾移动到开头。我得到
NSInternalInconsistencyException Reason: attempt to move section 36, but there are only 36 sections before the update
我只能提供C#代码,你也可以post Objective-C/Swift.
this.controller.CollectionView.PerformBatchUpdatesAsync (
delegate() {
nint sectionsBefore = this.controller.CurrentNumberOfSections;
this.controller.CurrentNumberOfSections += 12;
this.controller.CollectionView.InsertSections(NSIndexSet.FromNSRange(new NSRange(sectionsBefore,12)));
for(nint i=sectionsBefore; i<=this.controller.CurrentNumberOfSections; i++){
this.controller.CollectionView.MoveSection(i,0);
}
}
);
编辑:
这里是变量的输出:
sectionsBefore: 36
CurrentNumberOfSections: 48
Range: <NSIndexSet: 0x7a77b9b0>[number of indexes: 12 (in 1 ranges), indexes: (36-47)]
36
37
38
39
40
41
42
43
44
45
46
47
如果您有 36 个部分,那么您的有效部分索引为 0-35,但您的循环最终将调用 MoveSection(36, 0)
。您应该使用 <
而不是 <=
.
我想在 UICollectionView
中添加一些部分。 insertSections
索引为零对我不起作用。所以我的想法是在末尾insertSections
然后用moveSection:toSection:
把元素从末尾移动到开头。我得到
NSInternalInconsistencyException Reason: attempt to move section 36, but there are only 36 sections before the update
我只能提供C#代码,你也可以post Objective-C/Swift.
this.controller.CollectionView.PerformBatchUpdatesAsync (
delegate() {
nint sectionsBefore = this.controller.CurrentNumberOfSections;
this.controller.CurrentNumberOfSections += 12;
this.controller.CollectionView.InsertSections(NSIndexSet.FromNSRange(new NSRange(sectionsBefore,12)));
for(nint i=sectionsBefore; i<=this.controller.CurrentNumberOfSections; i++){
this.controller.CollectionView.MoveSection(i,0);
}
}
);
编辑:
这里是变量的输出:
sectionsBefore: 36
CurrentNumberOfSections: 48
Range: <NSIndexSet: 0x7a77b9b0>[number of indexes: 12 (in 1 ranges), indexes: (36-47)]
36
37
38
39
40
41
42
43
44
45
46
47
如果您有 36 个部分,那么您的有效部分索引为 0-35,但您的循环最终将调用 MoveSection(36, 0)
。您应该使用 <
而不是 <=
.