UICollectionView图像/数据我们的订单

问题描述:

我正在使用Storyboard在单元格内创建UICollectionViewController - CollectionView - 单元格(我自己的DasboardsViewCell)和我的客户视图(DashBoardView)。我正确地连接了一切,除了上下滚动时,一切似乎都正常。我会在调试后解释我的理解。UICollectionView图像/数据我们的订单

此外,我有我的DashBoardView自定义视图中的2个视图,我使用“一”作为主要的主要和其他作为FlipView(例如当用户点击单元格时)。由于所有东西都从故事板连线,所以我不需要注册Class以便重用。

1)在我DashboardCustomView(谁在它具有与上述其它2次)我这样做

- (id)initWithCoder:(NSCoder *)aDecoder 
{ 
    self = [super initWithCoder:aDecoder]; 
    if (self) { 
     _isPrimary = YES; 
     //to init my 2 child views and insert to main custom view 
     [self initSubViewsWithInsert]; 
} 
return self; 

}

2)在我DashBoardViewCell类我做这个

@synthesize dashBoardView = _dashBoardView;

- (id)initWithCoder:(NSCoder *)aDecoder 
{ 
    self = [super initWithCoder:aDecoder]; 
    if (self) { 
     self.backgroundColor = [UIColor colorWithWhite:0.75f alpha:0.6f]; 
     self.layer.borderColor = [UIColor blackColor].CGColor; 
     self.layer.borderWidth = 2.0f; 
     self.layer.cornerRadius = 7.0f; 
    } 
return self; 
} 

// If I dont do this below I get overlapped images and data on cell when scrolling up and down 
- (void)prepareForReuse 
{ 
    self.dashBoardView.mainContainerView = nil; 
    self.dashBoardView.flipView = nil; 
} 

3)现在,在这之后我还看到出现的自定义视图不按顺序,似乎比没有做“无”就我的看法有所好转,但问题是,一旦我无我的2子视图我没有当我的collectionview控制器重新加载单元格并开始添加我的内容时,可以使用自定义的方式重新初始化它们。

即我喜欢这个cellForItemAtIndexPath

if ([cell isKindOfClass:[DashboardsViewCell class]]) { 
    DashboardsViewCell *dashCell = (DashboardsViewCell*) cell; 
    Dashboard* tmpDashboard = self.availableDashBoards[indexPath.item]; 
    [dashCell.dashBoardView addDashboardImageViewAtPoint:tmpDashboard.identifier 
              usingIndexPath:indexPath]; 

最后线的上方被添加上的仪表板图像的一些和文本主视图,其是self.dashBoardView.mainContainerView和它已经为零。

有人可以帮助我了解是否有明确的方法来做到这一点。此外,如果你认为我看错了问题

我不确定问题是什么,并与该代码有点难以分辨。如果你可以在某个地方发布这个项目,它会更容易。现在,很多东西都是故事板制作的,它很难仅仅通过发布代码:(

来解决问题,但你有没有可能使用自动布局

+0

很抱歉回复迟到 - 没有我不使用自动布局。 – Gaurav18ca 2013-04-30 01:48:36

+0

好,太棒了!记住你总是可以发布在github上,如果需要的话可以在这里分享。很高兴你想出来了。 – marciokoko 2013-04-30 11:47:29

感谢您的答复吗? - 不我不是使用自动布局和我无法在这里发布我的代码,因为它现在变得太大了,但这是我做了什么来解决问题

1)我意识到何时细胞正在刷新(离队)我的逻辑是这样的,我实际上是维护状态某些单元格(用户从A,B,C,D等点击dashboard-B)以及我自己的内部状态,认为同一单元格将应用于相同的indexPath。即

a)如果用户点击单元格2 - 我切换到辅助视图并在我的单元格中保持该状态。

b)现在,如果用户向上和向下滚动,然后细胞得到刷新,我发布在prepareForResuse

我的内部视图一旦我知道我做错了,我不得不改变我的做法,并在控制器移动逻辑。

我可能在这里听起来很晦涩,但我发现我错误的是关于cellForItemAtIndexPath的假设以及它应该做什么。一旦我发现我能够修复我的设计。

+0

你也可以在这个答案中有一个掠夺http://*.com/a/13534778/135160 – anka 2013-07-24 18:35:51