UITableView 的didSelectRowAtIndexPath和didDeselectRowAtIndexPath


  今天被UITableView给坑了一道,我写了一个横向的UITableView

如图,通过这两个方法实现需求的触发事件,但是能同时选中两个index,

据说UITableView不会管视图外的indexpath,所以重点来了

自己定义一个indexpath,直接上代码

 NSIndexPath *_selectedIdxPath;

其他的都跟平常的UITableView一样的,只是初始化cell的时候需要这么做

//这是自定义的cell,按自己的需求来
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *identifier = @"filiter";
   FilterChooseTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    if (!cell)
    {
        cell = [[FilterChooseTableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
    }
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    [cell setImgViewImg:[UIImage imageNamed:_filiterData[indexPath.row]]];
    cell.contentView.transform = CGAffineTransformMakeRotation(M_PI / 2);
//这是未选中的调用的方法,初始化cell的时候,恢复原状
[cell DownVideoWitnAnimation:NO]; 
if (indexPath == _selectedIdxPath)
{
[cell MoveUpVideoWithAnimation:NO];
}
return cell;
}
//选中
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { FilterChooseTableViewCell *cell = (FilterChooseTableViewCell *)[tableView cellForRowAtIndexPath:indexPath]; [cell MoveUpVideoWithAnimation:YES];

       _selectedIdxPath = indexPath;

 
 
}
//未选中
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
    FilterChooseTableViewCell *cell = (FilterChooseTableViewCell *)[tableView cellForRowAtIndexPath:indexPath];
    [cell DownVideoWitnAnimation:YES];

}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM