• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - iCarousel - viewForItemAtIndex 在启动时加载所有索引

[复制链接]
菜鸟教程小白 发表于 2022-12-12 23:49:51 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在使用 iCarousel 来显示信息。每个索引(共 7 个)都有一个唯一的图像,上面有一个标签。每个都用 if 语句设置 if (index == 0){...} etc.

但是,当我加载页面(和轮播)时,最初只加载前三个图像。系统使用延迟加载等到轮播转来抓取下一张图片。我可以通过打印语句证明索引确实增加超过 2 一直到 6 [0..6]。但由于某种原因,我的轮播图片在第三张之后重复出现。

示例:周一、周二、周三、周一、周二、周三、周一 应该是:周一、周二、周三、周四、周五、周六、周日

任何想法如何解决这个问题?

更多测试 对于索引 0-2, View 为 nil,但对于索引 3+, View 不是 nil,并且 if 被跳过。知道如何解决这个问题吗?

- (UIView *)carouseliCarousel *)carousel viewForItemAtIndexNSUInteger)index reusingViewUIView *)view{

UILabel *label = nil;
NSLog(@"INDEX is %i", index);
//create new view if no view is available for recycling
if (view == nil)
{
    view = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 200.0, 200.0)];
    //view = [[UIImageView alloc] init];
    ((UIImageView *)view).image = [UIImage imageNamed:_locationDetailModel[2]];
    view.contentMode = UIViewContentModeCenter;
    label = [[UILabel alloc] initWithFrame:view.bounds];
    label.minimumScaleFactor = 8./label.font.pointSize;
    label.adjustsFontSizeToFitWidth = YES;
    [label setFont:[UIFont boldSystemFontOfSize:12]];
    ...
    if (index == 0){
        label.backgroundColor = [UIColor colorWithPatternImage:[self resizeForCarousel:[UIImage imageNamed"Monday_Hours.jpg"]]];
        }
    } else if (index == 1) {
        label.backgroundColor = [UIColor colorWithPatternImage:[self resizeForCarousel:[UIImage imageNamed"Tuesday_Hours.jpg"]]];
    } else if (index == 2){
        label.backgroundColor = [UIColor colorWithPatternImage:[self resizeForCarousel:[UIImage imageNamed"Wednesday_Hours.jpg"]]];
    } else if (index == 3){
        label.backgroundColor = [UIColor colorWithPatternImage:[self resizeForCarousel:[UIImage imageNamed"Thursday_Hours.jpg"]]];
    } else if (index == 4){
        label.backgroundColor = [UIColor colorWithPatternImage:[self resizeForCarousel:[UIImage imageNamed"Friday_Hours.jpg"]]];
    } else if (index == 5){
        label.backgroundColor = [UIColor colorWithPatternImage:[self resizeForCarousel:[UIImage imageNamed"Saturday_Hours.jpg"]]];
    } else if (index == 6){
        label.backgroundColor = [UIColor colorWithPatternImage:[self resizeForCarousel:[UIImage imageNamed"Sunday_Hours.jpg"]]];
    }
    label.textAlignment = NSTextAlignmentCenter;
    //label.textAlignment = UITextAlignmentCenter;
    label.font = [label.font fontWithSize:50];
    label.tag = 1;
    [view addSubview:label];
}
else
{
    label = (UILabel *)[view viewWithTag:1];
}
return view;

}



Best Answer-推荐答案


关键是去掉if(view == nil)

前 3 个索引点是有效的,但之后它们被启动并且不再为 nil

关于ios - iCarousel - viewForItemAtIndex 在启动时加载所有索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24771931/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap