複数の SKScenes を含むアプリがあります。スムーズに保つために、1 つの SKView を処理する単一の UIViewController があります。
SKScenes の 1 つに UICollectionView を追加しようとしています。ただし、コレクション ビューのデリゲートを初期化する SKScene に設定しようとすると問題が発生します。
ここで初期化します:
- (id)initWithSize:(CGSize)size
{
if (self = [super initWithSize:size]) {
//Initialise collectionView
UICollectionViewLayout *layout = [[UICollectionViewLayout alloc] init];
_collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, size.width, size.height) collectionViewLayout:layout];
_collectionView.delegate = self;
_collectionView.dataSource = self;
[_collectionView setBackgroundColor:[UIColor redColor]];
}
return self;
}
初期化後、以下を呼び出してコレクション ビューを UIViewController のビューのサブビューとして追加します。
- (void)didMoveToView:(SKView *)view
{
[self.view addSubview:_collectionView];
}
ただし、デリゲートまたはデータソース メソッドは呼び出されません。ヘッダーを設定しました:
@interface BrowseScene : SKScene <UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout>
self をデリゲートとして設定しても、コレクション ビューが追加されると、UIViewController の SKView のサブビューとして追加されるため、初期化した SKScene への参照がないと推測しています。私は電話してみました:
_collectionView.delegate = self.view.scene;
しかし、SKScene は UICollectionViewDelegate と互換性のない型であるというコンパイラ エラーが発生します。
だから私の質問は、これにどのようにアプローチするのが最善ですか?