1

アプリケーションで iCarousel を使用しています。iCarousel の現在のインデックスを取得し、そのインデックスを iCarousel のサブビューではないラベル (self.view のサブビュー) に表示する必要があります。現在のインデックスを取得できます

int index=iCarousel.currentIndex;

カルーセルがスクロールされるたびに、label.text のインデックスを更新するにはどうすればよいですか。どの方法で、ラベルを更新するコードを書く必要があります。

4

3 に答える 3

9

スクロールするたびに次のデリゲートが呼び出されるため、ここでラベルを更新できます

- (void)carouselCurrentItemIndexUpdated:(iCarousel *)carousel1
{
  int index=carousel1.currentIndex;
  yourlabel.text = [NSString stringWithFormat:@"%d",index];
}
于 2013-02-08T08:11:56.657 に答える
2

iCarousel を使用する場合は、 iCarousel のドキュメントから実装に入る前に、そのドキュメントを十分に検討することをお勧めします。

したがって、直面している問題については、ドキュメントで提供されている2つの方法があります-

- (NSInteger)indexOfItemView:(UIView *)view;

カルーセル内の特定のアイテム ビューのインデックス。アイテム ビューとプレースホルダー ビューで機能しますが、プレースホルダー ビューのインデックスは dataSource で使用されるものと一致せず、負の値になる場合があります (詳細については、上記の indexForVisibleItems プロパティを参照してください)。このメソッドは、表示されているアイテム ビューに対してのみ機能し、現在読み込まれていないビューに対しては NSNotFound を返します。現在読み込まれているすべてのビューのリストについては、visibleItemViews プロパティを使用します。

- (NSInteger)indexOfItemViewOrSubview:(UIView *)view

このメソッドは、渡されたビュー、またはパラメーターとして渡されたビューを含むビューのアイテム インデックスを提供します。これは、渡されたビューから始まり、項目ビューを見つけてカルーセル内でそのインデックスを返すまで、ビュー階層をたどることによって機能します。現在読み込まれているアイテム ビューが見つからない場合は、NSNotFound を返します。このメソッドは、アイテム ビュー内に埋め込まれたコントロールのイベントを処理するのに非常に役立ちます。これにより、すべてのアイテム コントロールをビュー コントローラーの単一のアクション メソッドにバインドし、アクションをトリガーしたコントロールがどのアイテムに関連しているかを調べることができます。この手法の例は、Controls Demo サンプル プロジェクトで確認できます。

お役に立てれば !!:)

于 2013-02-08T08:13:04.383 に答える
1

少し遅れましたが、他の人にとっては、次のデリゲートメソッドが機能します(複数のカルーセルを使用)

- (void)carouselCurrentItemIndexDidChange:(iCarousel *)carousel
{
    NSLog(@"%s", __FUNCTION__);

    if (carousel == carousel2) {
        NSLog(@"here");
        long (or int) currentIndex = carousel.currentItemIndex;

    }
}
于 2013-10-06T16:15:32.330 に答える