UICollectionView
カスタムUICollectionViewCell
クラスを利用するがあります。基本的な考え方は、コレクション ビューがディレクトリを走査し、ディレクトリ内に含まれる写真を表示することです (結果は API 呼び出しを介して)。最初のビュー コントローラーには が表示さUICollectionView
れ、セルをタップすると、新しい で新しいビューが生成されUICollectionView
ます。ディレクトリの内容はNSMutableDictionary
、ディレクトリ ID をキーにして に格納されます。
この問題は、写真のかなり短いリスト (通常は 30 枚未満) を使用して新しいビュー/コレクションビューが作成されたときに発生します。デバイスを回転させると、コレクション ビューが再レンダリングを試み、アプリが「インデックス X を超えるbounds [0 .. Y]"、X は Y (配列の最後の要素) より大きい数値です。
これは、新しく表示されたコレクション ビューのアイテムが「ルート」コレクション ビューよりも少ない場合にのみ発生する傾向があることに気付きました。
関連する(とにかくその一部)コードの例を次に示します。
- (NSInteger)collectionView:(UICollectionView *)view numberOfItemsInSection:(NSInteger)section {
return [[photos objectForKey:api.directoryID] count];
}
- (NSInteger)numberOfSectionsInCollectionView: (UICollectionView *)collectionView {
return 1;
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath {
PhotoCell *photoCell = [cv dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
photoCell.photo = [[photos objectForKey:api.directoryID] objectAtIndex:indexPath.row];
return photoCell;
}
少なくとも、 で try/catch を実行したいのですが、try/catch をcellForItemAtIndexPath
どこに配置すればよいかわかりません。おそらく習慣でUICollectionView
?
ありがとう!