0

NickLockwoodのiCarouselを使用しています。素晴らしい仕事。新しいアルバムをロードする前に、なんらかの方法でカルーセルをリセット/クリアする必要があるという問題があります。

背景:アプリはAPIからXMLを取得し、それを配列に解析します。TableViewは、アルバムのリストに最初のxmlを使用します。ユーザーがアルバムを選択/タップすると、iCarouselで表示するようにプッシュします。ユーザーはバックアップして別のアルバムを選択できます

うまく動作するファーストアルバム。後に選択されたアルバムに最初の写真と同じ数以上の写真が含まれている限り、正常に機能します。ユーザーが最初に選択したアルバムよりも写真が少ないアルバムを選択したときに爆弾を投下します。

エラーは次のとおりです。

- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view
{
...//('thumbs' is thumbnail array)
 APIContentObject *currentPhoto = [thumbs objectAtIndex:index];        
...
}

配列をiCarouselに同期することを期待して、インデックスが6でarray.countが4の場合、'[thumbs objectAtIndex:index]'をロードしようと爆弾を投下します。

私はcarousel=nilを試しました。viewWillDisappearで、いや。カルーセル=nilを実行しますか。ViewDidLoadで、何も取得されません...いつインスタンス化されますか?ViewDidLoadの前に?

私は本当にそれを空にするか、それをクリアするか、それをrelloc/initする方法を知る必要があります。'for'ループを使用して、それぞれを手動でitematindexを削除しようとしましたが、エラーも発生します。

期待どおりではありませんが、機能します。リルのアドバイス?とても有難い。

編集:わかりました、私が使用するとき:

- (NSUInteger)numberOfVisibleItemsInCarousel:(iCarousel *)carousel
{
    //return the total number of items in the carousel
    return [thumbs count];
}

表示されるアイテムの量を設定するには...これは興味深い点のようです。設定しない/このコードブロックを使用すると、7枚程度の画像しか表示されません...設定すると、すべて表示されますが、画像数が少ないアルバムをヒットすると爆弾が発生します。私はこれで輪になって走り回っています。

4

1 に答える 1

0

リサイクルの問題についての別の投稿を読んで手がかりを得ました。

リサイクラー内に画像をロードするように呼び出しました...(ProgrammerError * ME!)

if (view == nil)
    {...
    [((FXImageView *)view) setImageWithURL:[NSURL URLWithString:currentPhoto.ThumbnailURL] placeholderImage:[UIImage imageNamed:@"loading.png"]];
    ...}

状態とワモの外にそれを動かしました...すべてより良いです。

于 2012-11-27T18:17:14.177 に答える