0

错误信号 SIGABRT NSInvalidArgumentException',原因:'UICollectionView 必须使用非零布局参数初始化'。

当 UITableViewCell 被按下时,它应该显示 UICollectionView

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UIViewController *viewController;
switch (indexPath.row) {

    case IMAGE: 
        viewController = [[[CollectionViewController alloc] init] autorelease];
 [self.CollectionViewController registerClass:[UICollectionViewCell class]forCellWithReuseIdentifier:@"Cell"];

        case PROCEDURAL:
        viewController = [[[ProceduralExampleViewController alloc] init] autorelease]; 
        break;
    default: 
        viewController = [[[UIViewController alloc] init] autorelease];
} 
[self.navigationController pushViewController:viewController animated:YES];
}

使用故事板文件进行集合视图 segue。

如何解决这个错误UICollectionView must be initialized with a non-nil layout parameter

感谢帮助。

4

1 回答 1

4

UICollectionView 必须使用非零布局参数初始化

希望是不言自明的。UICollectionView 的指定初始化程序是

- (id)initWithFrame:(CGRect)frame collectionViewLayout:(UICollectionViewLayout *)layout

所以你需要给它传递一个布局对象。您没有显示创建集合视图的代码,但我假设CollectionViewController它是一个UICollectionViewController子类,在这种情况下,您需要使用这个指定的初始化程序:

- (id)initWithCollectionViewLayout:(UICollectionViewLayout *)layout

目前,您正在使用init.

在这两种情况下,您都需要在初始化时创建并传入布局对象。

如果您的集合视图保存在情节提要中,那么您需要使用 来从情节提要中获取它instantiateViewControllerWithIdentifier:,因此您上面的代码将如下所示:

viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"CollectionViewController"];
于 2013-06-20T16:00:42.963 回答