iOS – 在“UITableView”中允许默认的行移动,而不需要编辑模式

iOS – 在“UITableView”中允许默认的行移动,而不需要编辑模式,第1张

概述我想允许在UITableView中的默认行移动,而不会处于编辑模式,并且不会影响UITableView的默认行为. 上图显示编辑模式下的单元格,启用移动. 我试图简单地运行(在UIView * subview在cell.subviews)(当我的UITableView处于编辑模式),但按钮没有出现: <UITableViewCellScrollView: 0x8cabd80; frame = (0 我想允许在UItableVIEw中的默认行移动,而不会处于编辑模式,并且不会影响UItableVIEw的默认行为.

上图显示编辑模式下的单元格,启用移动.@H_403_3@

我试图简单地运行(在UIVIEw * subvIEw在cell.subvIEws)(当我的UItableVIEw处于编辑模式),但按钮没有出现:@H_403_3@

<UItableVIEwCellScrollVIEw: 0x8cabd80; frame = (0 0; 320 44); autoresize = W+H; gestureRecognizers = <NSArray: 0x8c9ba20>; layer = <CALayer: 0x8ca14b0>; contentOffset: {0,0}>

如何允许/添加移动“按钮”而不启用我的UItableVIEw中的编辑模式?@H_403_3@

创建和添加具有默认运动功能的UIbutton也是一种选择.@H_403_3@解决方法 我实际上为我的一个应用程序做了类似的事情.它使用委托方法进行表格编辑,并使用户“欺骗”一点. 100%内置苹果功能.

1 – 将表设置为编辑(我在vIEwWillAppear中执行)@H_403_3@

-(voID)vIEwWillAppear:(BOol)animated{    [super vIEwWillAppear:animated];    [self.tableVIEw setEditing:YES];}

2 – 隐藏默认附件图标:@H_403_3@

-(UItableVIEwCellEditingStyle)tableVIEw:(UItableVIEw *)tableVIEw         editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{        //remove any editing accessorIEs (AKA) delete button         return UItableVIEwCellAccessoryNone;       }

3 – 保持编辑模式,将所有内容移动到右侧(在单元格中)@H_403_3@

-(BOol)tableVIEw:(UItableVIEw *)tableVIEw shouldindentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath{return NO;}

4 – 在这一点上,您应该可以拖动单元格,而不是看起来像编辑模式.在这里我们欺骗用户.创建自己的“移动”图标(默认情况下三行,您想要的任何图标),并将imageVIEw正确放置在单元格上.@H_403_3@

5 – 最后,实现委托方法来实际重新排列你的底层数据源.@H_403_3@

-(voID)tableVIEw:(UItableVIEw *)tableVIEw moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath{    //Get original ID    NSMutableArray *originalArray = [self.model.items objectAtIndex:sourceIndexPath.section];    Item * original = [originalArray objectAtIndex:sourceIndexPath.row];    //Get destination ID    NSMutableArray *destinationArray = [self.model.items objectAtIndex:destinationIndexPath.section];    Item * destination = [destinationArray objectAtIndex:destinationIndexPath.row];    CGPoint temp = CGPointMake([original.section intValue],[original.row intValue]);    original.row = destination.row;    original.section = destination.section;    destination.section = @(temp.x);    destination.row = @(temp.y);    //Put destination value in original array    [originalArray replaceObjectAtIndex:sourceIndexPath.row withObject:destination];    //put original value in destination array    [destinationArray replaceObjectAtIndex:destinationIndexPath.row withObject:original];    //reload tablevIEw smoothly to reflect changes    dispatch_async(dispatch_get_main_queue(),^{        [UIVIEw TransitionWithVIEw:tableVIEw duration:duration options:UIVIEwAnimationoptionTransitionCrossdissolve animations:^{            [tableVIEw reloadData];        } completion:NulL];    }); }
总结

以上是内存溢出为你收集整理的iOS – 在“UITableView”中允许默认的行移动,而不需要编辑模式全部内容,希望文章能够帮你解决iOS – 在“UITableView”中允许默认的行移动,而不需要编辑模式所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1095694.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存