여러 SKScenes가있는 앱이 있습니다. 그것을 유지하기 위해, 나는 하나의 SKView를 처리하는 단일 UIViewController 있습니다.SKScene을 통한 UICollectionView 사용
SKScenes 중 하나에 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>
내가 컬렉션 뷰가 추가되면 대리인으로 자신을 설정에도 불구하고, 그것이있는 UIViewController의 SKView의 하위 뷰로 추가 같은데요을, 따라서 대한 언급이 없습니다 그걸 초기화 한 SKScene에게. 내가 전화하려고 :
_collectionView.delegate = self.view.scene;
하지만 SKScene가 UICollectionViewDelegate에 대한 호환되지 않는 유형이다라는 컴파일러 오류가 발생합니다.
내 질문은 어떻게 접근하는 것이 가장 좋습니까?
self.view.scene 오류는 특정 장면 하위 클래스가 아니라 SKScene이라는 것을 알고 있기 때문에 발생합니다. 내 생각 엔 didMoveToView의 뷰에 하위 뷰를 추가하면 viewDidLoad/WillAppear/DidLoad가 이미 호출 된 이후로 데이터를로드하지 않는다는 것입니다. 어떤 지점에서 [_collectionView reloadData]를 호출하여 해당 항목이 채워지는지 확인하십시오. – Devin
didMoveToView에서 컬렉션보기를 초기화 해 보셨습니까? – LearnCocos2D