2015-11-24 35 views
1

我有一个UIViewController和一个UICollectionViewController。我使用UICollectionViewController添加到UIViewController中执行以下操作:将UICollectionViewController添加到UIViewController不工作

UICollectionViewFlowLayout* flowLayout = [[UICollectionViewFlowLayout alloc]init]; 
[flowLayout setScrollDirection:UICollectionViewScrollDirectionHorizontal]; 

self.toolsCollectionViewController = [[ToolsCollectionViewController alloc] initWithCollectionViewLayout:flowLayout]; 
self.toolsCollectionViewController.view.backgroundColor = [UIColor clearColor]; 

[self addChildViewController:self.toolsCollectionViewController]; 
[self.view addSubview:self.toolsCollectionViewController.view]; 
[self.toolsCollectionViewController didMoveToParentViewController:self]; 

的问题是,当我加入收藏我得到一个纯黑色的屏幕显示上显示无细胞

 
#import "ToolsCollectionViewController.h" 

@interface ToolsCollectionViewController() 

@end 

@implementation ToolsCollectionViewController 

static NSString * const reuseIdentifier = @"Cell"; 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    // Uncomment the following line to preserve selection between presentations 
    // self.clearsSelectionOnViewWillAppear = NO; 

    // Register cell classes 
    [self.collectionView registerClass:[ToolsCollectionViewCell class] forCellWithReuseIdentifier:reuseIdentifier]; 

    // Do any additional setup after loading the view. 
} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

/* 
#pragma mark - Navigation 

// In a storyboard-based application, you will often want to do a little preparation before navigation 
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    // Get the new view controller using [segue destinationViewController]. 
    // Pass the selected object to the new view controller. 
} 
*/ 

#pragma mark 

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { 
#warning Incomplete implementation, return the number of sections 
    return 1; 
} 


- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { 
#warning Incomplete implementation, return the number of items 
    return 10; 
} 

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { 

    ToolsCollectionViewCell *cell = (ToolsCollectionViewCell *)[collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentifier forIndexPath:indexPath]; 
    NSLog(@"Cell"); 
    // Configure the cell 

    return cell; 
} 

#pragma mark 

/* 
// Uncomment this method to specify if the specified item should be highlighted during tracking 
- (BOOL)collectionView:(UICollectionView *)collectionView shouldHighlightItemAtIndexPath:(NSIndexPath *)indexPath { 
    return YES; 
} 
*/ 

/* 
// Uncomment this method to specify if the specified item should be selected 
- (BOOL)collectionView:(UICollectionView *)collectionView shouldSelectItemAtIndexPath:(NSIndexPath *)indexPath { 
    return YES; 
} 
*/ 

/* 
// Uncomment these methods to specify if an action menu should be displayed for the specified item, and react to actions performed on the item 
- (BOOL)collectionView:(UICollectionView *)collectionView shouldShowMenuForItemAtIndexPath:(NSIndexPath *)indexPath { 
    return NO; 
} 

- (BOOL)collectionView:(UICollectionView *)collectionView canPerformAction:(SEL)action forItemAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender { 
    return NO; 
} 

- (void)collectionView:(UICollectionView *)collectionView performAction:(SEL)action forItemAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender { 

} 
*/ 

@end 

我已经创建了一个NSLog通过单元格的循环,似乎工作正常。不知道我错过了什么。

+0

看起来像您的实施是正确的。尝试在cellForItemAtIndexPath方法中为您的单元格提供一些背景颜色。 – anil

+0

设置子视图控制器的框架 –

回答

0

您是否正确设置了collectionView的委托和数据源?如果没有这两个,collectionView将显示为空,并且只会显示带有背景颜色的矩形。

最有可能你需要的是放置在下面的- (void)viewDidLoad以上: self.collectionView.delegate = self; self.collectionView.dataSource = self;

0

我认为,所有你需要做的是连接集合视图的数据源和委托给你的UICollectionViewController作为mahboudz's answer或者你可以把集合视图放在你的UIViewController中,并将集合视图数据源和委托直接链接到你的UIViewController,这可能更容易。

希望它有帮助。

0

可能有3种不同的情况。您已经实现

  1. 配色方案造成问题
  2. 委托和数据源没有被正确调用。
  3. 您的单元格不存在或重用标识符无效。
相关问题