UICollectionView无法正确呈现

时间:2014-05-21 06:16:09

标签: ios7

该程序有一个tableview。每个TableViewCell都有一个UICollectionView。当用户拖放其中一个类别标签时,该程序将添加UICollectionViewCell,其中包含UIView。它运作良好。但是,当用户滚动表格视图时,UICollectionView将无法正确呈现。显示如下。

这是用户滚动视图之前的图片。 http://cl.ly/image/1P0s3Z0m443t

用户滚动视图后,会有一个与罪恶重叠的承诺。承诺单元不应该在那里。 http://cl.ly/image/3L2M1s3s3F0X

这是我的cellForRowAtIndexPath代码

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";

// Configure the cell..
/*
 There is no UITableViewCell in the storyboard
 */
ContentViewCustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

UILabel * cellLabel = nil;  //The cellLabel is for rendering the bible verses

if (cell==nil) {
    cell = [[ContentViewCustomTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

    /*
     To Make Dynamic Cell Height
     */
    cellLabel = [[UILabel alloc] initWithFrame:CGRectZero];
    [cellLabel setNumberOfLines:0];
    [cellLabel sizeToFit];

    [cellLabel setFont:[UIFont systemFontOfSize:FONT_SIZE]];
    [cellLabel setTag:1];
    [[cell contentView] addSubview:cellLabel];
}

NSString * text = [verseArray objectAtIndex:[indexPath row]];
CGSize constraint = CGSizeMake(CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), 20000.0f);
CGRect rectangular = [text boundingRectWithSize:constraint options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName: [UIFont systemFontOfSize:FONT_SIZE]} context:nil];
CGSize size = rectangular.size;

/*
 When There Are Rows More Than One Screen
 */
if (!cellLabel) {
    cellLabel = (UILabel *)[cell viewWithTag:1];
}
cell.CellContent = text;
[cellLabel setText:text];
[cellLabel setFrame:CGRectMake((self.view.frame.size.width*0.39), 0, CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), MAX(size.height, 44.0f))]; //To Locate The Position Of The Label In The Cell

cell.userInteractionEnabled = TRUE;
return cell;
}

这是ContentViewCustomTableViewCell

#import "ContentViewCustomTableViewCell.h"
#import "AnswerCollectionViewCell.h"

@implementation ContentViewCustomTableViewCell

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
    // Initialization code

    UICollectionViewFlowLayout * layout = [[UICollectionViewFlowLayout alloc] init];
    layout.sectionInset = UIEdgeInsetsMake(3, 3, 2, 2);
    layout.itemSize = CGSizeMake(30, 10);
    layout.scrollDirection = UICollectionViewScrollDirectionVertical;
    self.collectionView = [[AFIndexedCollectionView alloc] initWithFrame:CGRectZero
                                                    collectionViewLayout:layout];

    [self.collectionView registerClass:[AnswerCollectionViewCell class]forCellWithReuseIdentifier:CollectionViewCellIdentifier];

    self.collectionView.backgroundColor = [UIColor colorWithRed:0.1 green:0.1 blue:0.1 alpha:0.1];
    self.collectionView.showsVerticalScrollIndicator = NO;

    [self.contentView addSubview:self.collectionView];

}
return self;
}

- (void)awakeFromNib
{

}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];

// Configure the view for the selected state
}

-(void)layoutSubviews
{
[super layoutSubviews];
self.collectionView.frame = CGRectMake(10, 10, 110, 50);
}

-(void)setCollectionViewDataSourceDelegate:(id<UICollectionViewDataSource,      UICollectionViewDelegate>)dataSourceDelegate index:(NSInteger)index
{
self.collectionView.dataSource = dataSourceDelegate;
self.collectionView.delegate = dataSourceDelegate;
self.collectionView.index = index;

[self.collectionView reloadData];
}


@end

0 个答案:

没有答案