UICollectionView doesn't contain UICollectionViewCell in IB

前端 未结 4 620
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-12-18 19:01

I\'m trying to add a UICollectionView to a .nib file in IB. I\'ve worked through a few tutorials and had no problems.

In my existing app, when I drag a collection vi

4条回答
  •  无人及你
    2020-12-18 19:31

    While these answers are correct, the underlying cause of the problem is quite subtle and Apple needs to update their error message in the log. When you see:

    Unknown class MyViewCell in Interface Builder file.
    

    What it actually means is that your source code is missing the @implementation declaration or that the .m file has not been added to the target. So check your code and make sure you have:

    @implementation MyViewCell
    
    @end
    

    This is true for both UITableViewCell and UICollectionViewCell.

    I discuss the problem further at https://stackoverflow.com/a/12755891/539149 for the general case.

    The interesting thing is that if you are missing the @implementation and call:

    [self.myCollectionView registerClass:[MyViewCell class] forCellWithReuseIdentifier:@"MyViewCell"];
    

    You will see:

    Undefined symbols for architecture armv7:
      "_OBJC_CLASS_$_MyViewCell", referenced from:
          objc-class-ref in MyViewController.o
    ld: symbol(s) not found for architecture armv7
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    

    So Apple knows about the problem, they just aren't detecting it during compilation. I would advise against putting custom cells in separate nibs or calling registerClass: forCellWithReuseIdentifier:. It's much cleaner to store the custom cell inside of its container UICollectionView or UITableView in Interface Builder.

提交回复
热议问题