UICollectionView图像/数据我们的订单

时间:2013-04-27 16:41:00

标签: ios storyboard uicollectionview

我正在使用Storyboard在单元格内创建UICollectionViewController - CollectionView - Cell(我自己的DasboardsViewCell)和我的客户视图(DashBoardView)。我正确地连接了一切,除了我上下滚动外,一切似乎都有效。我将在调试后解释我的理解是什么。

此外,我在DashBoardView自定义视图中有2个视图,我使用“one”作为主要主视图,而另一个视图使用FlipView(例如,当用户点击单元格时)。由于所有内容都是从故事板连接起来的,所以我没有注册注册类重用。

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)在此之后,我仍然看到自定义视图出现故障并且看起来好于不在我的视图上执行“nil”,但问题是我曾经没有找到我的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,它已经没有了。

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

2 个答案:

答案 0 :(得分:0)

我不确定问题究竟是什么,使用该代码有点难以辨别。如果你可以在某个地方发布项目,那就更容易了。现在很多东西都是故事板,只需发布​​代码就很难解决问题:(

但是你有机会使用自动布局吗?

答案 1 :(得分:0)

感谢您的回复 - 不,我没有使用自动布局,我无法在此发布我的代码,因为它现在已经变得太大了,但这是我为解决问题所做的工作

1)我意识到当细胞被刷新(出队)时我的逻辑是这样的,我实际上维持某个细胞的状态(用户从A,B,C,D等点击仪表板-B)用我自己的内部状态思考相同的单元格将应用于同一个indexPath。即

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

b)现在,如果用户上下滚动,那么单元格会刷新,我会在prepareForResuse中释放我的内部视图

一旦我知道我做错了什么,我就必须改变我的方法并在控制器中移动逻辑。

我可能听起来很模糊,但我发现我对细胞cellForItemAtIndexPath以及它应该做的假设是错误的。一旦我发现了我能够修复我的设计。