0

我想在弹出窗口中有一个集合视图。所以首先我设置了我的 Collection 视图控制器和我的自定义单元格。当我从这里启动程序时,它工作正常。

在另一个视图控制器中,我创建了一个以集合视图作为其内容的弹出框控制器。当我点击工具栏按钮时,弹出框需要变为活动状态。

当我运行模拟器时,出现此错误:

'无法使同类视图出列:带有标识符 CameraSystemCell 的 UICollectionElementKindCell - 必须为标识符注册一个 nib 或一个类,或者连接情节提要中的原型单元格

这是我的viewcontroller.m代码:

#import "ViewController.h"
#import "CameraSystemMenuViewController.h"

@interface ViewController () <UIPopoverControllerDelegate>
{
    CameraSystemMenuViewController *cameraSystemMenu;
    UIPopoverController *popoverController;
}
@end

@implementation ViewController
@synthesize cameraSystemButton = _cameraSystemButton;

- (void)viewDidLoad
{
    [super viewDidLoad];

    UICollectionViewFlowLayout *aFlowLayout = [[UICollectionViewFlowLayout alloc] init];
    cameraSystemMenu = [[CameraSystemMenuViewController alloc] initWithCollectionViewLayout:aFlowLayout];

    popoverController = [[UIPopoverController alloc] initWithContentViewController:cameraSystemMenu];
    [popoverController setDelegate:self];

}

- (IBAction)cameraSystemSelectButton:(id)sender
{
    [popoverController presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
    [popoverController setPopoverContentSize:CGSizeMake(320, 400)];

}
@end

这是我在 CameraSystemMenuViewController.m 中的cellForItemAtIndexPath

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    CameraSystemCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"CameraSystemCell" forIndexPath:indexPath];
    [[cell collectionImageView] setImage:cameraImage];
    cell.cameraSystemName.text = [cameraNumbers objectAtIndex:indexPath.item];

    return cell;
}

单元标识符是正确的,并且情节提要单元具有正确的自定义类。我不必注册,因为我使用的是故事板中的自定义单元格。该怎么办?

4

1 回答 1

0

UICollectionViewController根据您的问题,我可以理解您正在尝试在情节提要中进行设置。它将为您提供带有原型单元 ( I don't have to register because I am using a custom cell that is in the storyboard) 的集合视图。如果我理解错误,请忽略它。但是在viewController您再次实例化 collectionViewController 时,不使用情节提要。 所以而不是

UICollectionViewFlowLayout *aFlowLayout = [[UICollectionViewFlowLayout alloc] init];
cameraSystemMenu = [[CameraSystemMenuViewController alloc] initWithCollectionViewLayout:aFlowLayout];  

利用

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    cameraSystemMenu =   [mainStoryboard instantiateViewControllerWithIdentifier:@"CameraSystemMenuViewController"];  

试一下..:)

于 2013-03-25T14:16:27.240 回答