【问题标题】:Update label when UIScrollView pages iOSUIScrollView页面iOS时更新标签
【发布时间】:2012-11-03 05:36:15
【问题描述】:

我有一个视图控制器,它在屏幕的上半部分包含一个 UIScrollView。在下半部分我有一个标签。这是表格的详细视图,因此一旦您从表格中选择了一个项目,它就会加载此详细视图。您选择的某些项目有不同的变体,因此这是滚动视图的用武之地。您可以左右滚动以查看变体。

我试图让滚动视图下方的标签在滚动视图滚动时更改其文本。这是我用来检测我在哪个页面上的:

CGFloat pageWidth = scrollView.frame.size.width; 
int page = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;

这将返回滚动视图的“页码”。当用户滚动到不同的页面时,如何告诉标签更改其文本?我查看了很多示例,包括自定义委托,但似乎找不到一个好的解决方案。

作为旁注,要显示的标题在一个数组中,所以objectAtIndex:page - 1 将是完美的,一旦我能找到一种方法来告诉标签(以及将来可能显示的任何其他标签)进行更新。

【问题讨论】:

    标签: uiscrollview uiscrollviewdelegate


    【解决方案1】:

    为什么不试试这个:

    #define ScrollObjWidth 320.0f // Note: Use what size you need!
    
    - (void)scrollViewDidScroll:(UIScrollView *)scrollView; {
      float roundedValue = round(scrollView.contentOffset.x / ScrollObjWidth);
      _label.text = [NSString stringWithFormat:@"%d", ((int)roundedValue - 1)];
    }
    

    确保您的UIViewControllerUIScrollViewDelegate,并且UIScrollViewdelegate 属性设置为UIViewController

    希望有帮助!

    【讨论】:

    • 效果很好,没想到这么简单!非常感谢!
    • 没问题!很高兴我能帮上忙!
    • @msgambel for this code 如何将数组传递给标签文本?
    • @User558 你什么意思?而数组是对象的集合,不一定是NSString 对象。如果要从数组中获取特定索引处的对象,请使用[array objectAtIndex:index]
    猜你喜欢
    • 2021-06-24
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-22
    • 1970-01-01
    相关资源
    最近更新 更多