所以基本的问题是当我单击单元格时,它应该转到新视图控制器中的单元格索引1,但是当你有自动布局时。 collectionview内容偏移更改消失并重置。把它关掉,工作正常。 Autolayout以某种方式导致内容偏移重置,但我不确定为什么或如何解决这个问题。
此处提供代码。
答案 0 :(得分:1)
将代码用作: -
- (void) viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self performSelectorOnMainThread:@selector(doyouwork) withObject:nil waitUntilDone:NO];
}
-(void)doyouwork
{
[self snapToCellAtIndex:1 withAnimation:NO];
}
- (void) snapToCellAtIndex:(NSInteger)index withAnimation:(BOOL) animated
{
NSIndexPath *path = [NSIndexPath indexPathForRow:index inSection:0];
[self.collectionView scrollToItemAtIndexPath:path atScrollPosition:UICollectionViewScrollPositionLeft animated:animated];
}
为我的一方工作。
答案 1 :(得分:0)
自动布局不是重置内容偏移,但是当您尝试捕捉单元格时,子视图尚未定位。
使用自动布局时,子视图稍后会定位(首先调用 viewWillAppear )。尝试使用viewDidLayoutSubviews代替捕获单元格:
来自viewDidLayoutSubviews的文档:
通知视图控制器其视图刚刚布置了其子视图。
因此,在计算完所有约束并放置了子视图后,您可以调用捕捉方法。
- (void)viewDidLayoutSubviews
{
[super viewWillLayoutSubviews];
[self snapToCellAtIndex:1 withAnimation:NO];
}