indexPathForCell获取indexPath为nil的情况

有时候我会利用indexPathForCell方法获取指定cell的indexPath,我的项目的有一个使用场景:在cell里有个图片,在利用sdImage下载完成图片后要回调到controller设置源数据指定Model的Image,这个图片可能还要其他操作,所以要保存起来。但是在根据cell获取IndexPath的时候出现了问题,获取的都是nil;

片段代码:

GoodsSkuTableViewCell.m
[self.skuShowImageView sd_setImageWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@", model.imagePath, Thumbnail_image_Suffix]] placeholderImage:[UIImage imageNamed:@"goods_add_type_image"] completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
                    
                    //下载完成后回调
                    if (image && weakSelf.delegate && [weakSelf.delegate respondsToSelector:@selector(tableViewCell:TypeImageDownloadFinish:)]) {
                        //这里是解决方案
                        model.image = image;
                    }
                }];
AddGoodsView.m
- (void)tableViewCell:(GoodsSkuTableViewCell *)cell TypeImageDownloadFinish:(UIImage *)image {
    //这里有可能是nil
    NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
}

为什么获取的是nil呐;

后来经过测试只有在tableVew刷新完成创建好当前显示的cell才能调用

[self.tableView indexPathForCell:cell]

否则是无效的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`el-menu`组件的`open`属性用于控制菜单项是否展开,而`indexPath`属性则用于记录菜单项的索引路径。当菜单项的索引路径与`indexPath`匹配时,该菜单项将自动展开。 要使用`open`和`indexPath`属性,你需要按照以下步骤操作: 1. 在菜单项的数据中,为每个菜单项设置一个唯一的索引路径。索引路径可以是一个字符串,也可以是一个数组。例如,你可以将顶级菜单项的索引路径设置为字符串,子菜单项的索引路径设置为数组。 2. 在`el-menu`组件中,使用`open`属性绑定一个数组,用于记录需要展开的菜单项的索引路径。 3. 在菜单项的模板中,使用`v-if`指令根据`open`属性和菜单项的索引路径来判断是否展开菜单项。例如,可以使用`v-if="open.includes(item.indexPath)"`来判断是否展开。 下面是一个示例代码: ```vue <template> <el-menu :default-active="activeMenu" :open="open"> <el-submenu v-for="item in menuItems" :key="item.indexPath" :index="item.indexPath"> <template slot="title">{{ item.title }}</template> <el-menu-item v-for="subItem in item.subItems" :key="subItem.indexPath" :index="subItem.indexPath" v-if="open.includes(subItem.indexPath)"> {{ subItem.title }} </el-menu-item> </el-submenu> </el-menu> </template> <script> export default { data() { return { activeMenu: '', // 当前激活的菜单项 open: ['1'], // 需要展开的菜单项的索引路径 menuItems: [ { title: '菜单1', indexPath: '1', subItems: [ { title: '子菜单1', indexPath: '1-1' }, { title: '子菜单2', indexPath: '1-2' } ] }, { title: '菜单2', indexPath: '2', subItems: [ { title: '子菜单3', indexPath: '2-1' }, { title: '子菜单4', indexPath: '2-2' } ] } ] }; } }; </script> ``` 在上面的示例中,`open`数组中的索引路径 `'1'` 表示需要展开的菜单项是第一个菜单项。只有当菜单项的索引路径与`open`数组中的索引路径匹配时,相应的菜单项才会展开。 希望这个示例能帮助你理解如何使用`open`和`indexPath`属性来控制`el-menu`组件中菜单项的展开状态。如果还有其他问题,请随时提问!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值