【问题标题】:Display current index of iCarousel in a label which is not a subView in ICarousel在不是 ICarousel 中的子视图的标签中显示 iCarousel 的当前索引
【发布时间】:2013-02-08 08:02:54
【问题描述】:

我在我的应用程序中使用 iCarousel,我需要获取 iCarousel 的当前索引并将该索引显示在标签(self.view 的子视图)中,该标签不是 iCarousel 的子视图。 我可以通过

获取当前索引
int index=iCarousel.currentIndex;

如何在每次滚动轮播时更新 label.text 中的索引。 我必须在哪种方法中编写代码来更新标签。

【问题讨论】:

    标签: iphone ios uiview uiscrollview


    【解决方案1】:

    每当您滚动时,都会调用以下委托,因此您可以在此处更新您的标签

    - (void)carouselCurrentItemIndexUpdated:(iCarousel *)carousel1
    {
      int index=carousel1.currentIndex;
      yourlabel.text = [NSString stringWithFormat:@"%d",index];
    }
    

    【讨论】:

    • 由于某种原因,这个方法永远不会被调用。 carouselCurrentItemIndexDidChange 确实被调用了。
    【解决方案2】:

    对于使用 iCarousel,最好在从 iCarousel Documentation 开始实施之前彻底研究其文档。

    因此,对于您面临的问题,文档中提供了 2 种方法 -

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

    轮播中给定项目视图的索引。适用于项目视图 和占位符视图,但是占位符视图索引不匹配 数据源使用的那些可能是负数(参见 上面的 indexForVisibleItems 属性以获取更多详细信息)。这种方法 仅适用于可见项目视图,并将返回 NSNotFound 视图 当前未加载的。获取所有当前加载的列表 视图,请使用 visibleItemViews 属性。

    - (NSInteger)indexOfItemViewOrSubview:(UIView *)view
    

    此方法为您提供所传递视图的项目索引或 包含作为参数传递的视图的视图。它通过走路来工作 从传递的视图开始的视图层次结构,直到找到 项目视图并返回其在轮播中的索引。如果不 找到当前加载的项目视图,它返回 NSNotFound。这 方法对于处理嵌入控件上的事件非常有用 在项目视图中。这允许您将所有项目控件绑定到 视图控制器上的单个操作方法,然后解决 触发操作的控件与哪个项目相关。你 可以在 Controls Demo 示例中查看此技术的示例 项目。

    希望这会有所帮助! :)

    【讨论】:

      【解决方案3】:

      有点晚了,但对其他人来说,以下委托方法对我有用(带有多个轮播)

      - (void)carouselCurrentItemIndexDidChange:(iCarousel *)carousel
      {
          NSLog(@"%s", __FUNCTION__);
      
          if (carousel == carousel2) {
              NSLog(@"here");
              long (or int) currentIndex = carousel.currentItemIndex;
      
          }
      }
      

      【讨论】:

      • 出于某种原因,这是唯一为我调用的委托方法。 carouselCurrentItemIndexUpdated 永远不会被调用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-02
      • 1970-01-01
      • 2017-12-21
      • 2017-09-28
      • 1970-01-01
      • 2013-09-03
      相关资源
      最近更新 更多