ios – 在编辑模式下隐藏UITableView多重选择中的复选标记

ios – 在编辑模式下隐藏UITableView多重选择中的复选标记,第1张

概述我有一个UITableView,可以在编辑模式下使用viewDidLoad中的以下行自动设置多个选择: self.tableView.allowsMultipleSelectionDuringEditing = YES;[self setEditing:YES animated:YES]; 但是,我想通过更改其背景颜色来指示选择行,而不是通过自动显示在每行左侧的复选标记来选择. (例如,在Mai 我有一个UItableVIEw,可以在编辑模式下使用vIEwDIDLoad中的以下行自动设置多个选择:

self.tableVIEw.allowsMultipleSelectionDuringEditing = YES;[self setEditing:YES animated:YES];

但是,我想通过更改其背景颜色来指示选择行,而不是通过自动显示在每行左侧的复选标记来选择. (例如,在Mail应用程序中编辑电子邮件列表时出现的,或者在this SO question中讨论过的那些.)我在大多数情况下都使用它,除了我无法获得自动创建的复选框作为将UItableVIEw置于编辑模式的一部分,离开.

以下是我正在使用的代码:

- (NSInteger)numberOfSectionsIntableVIEw:(UItableVIEw *)tableVIEw{    return 1;}- (NSInteger)tableVIEw:(UItableVIEw *)tableVIEw numberOfRowsInSection:(NSInteger)section{    return _HIErachy.cellCount;}- (UItableVIEwCell *)tableVIEw:(UItableVIEw *)tableVIEw cellForRowAtIndexPath:(NSIndexPath *)indexPath {    UItableVIEwCell *testCell = [tableVIEw dequeueReusableCellWithIDentifIEr:@"cell"];    if(testCell == nil) {        testCell = [[UItableVIEwCell alloc] initWithStyle:UItableVIEwCellStyleDefault reuseIDentifIEr:@"cell"];    }    [[testCell textLabel] setText:@"Test Cell"];    return testCell;}

这是我到目前为止唯一的UItableVIEw方法,所以其他一切都应该是默认行为.

在编辑模式下,是否有人知道如何在左侧隐藏这些复选标记?我在单元的附件部分看到了很多关于复选标记的问题,但据我了解,这是另一回事.我也看到人们谈论tableVIEw:dIDSelectRowAtIndexPath:方法,但这些复选标记是在表进入编辑模式时创建的,并在用户点击“完成”时被解除,因此该方法似乎不相关.

我最接近的是找到这种方法:

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

但这只是防止单元格的内容缩进,以便为复选标记腾出空间.复选标记仍然出现.

当然有一种隐藏这些复选标记的方法,并且仍然允许在编辑模式下进行多项选择?或者,在启用了多个选择的编辑模式下,UItableVIEw的那些检查标记是否是严格的强制行为?

编辑:我(不情愿地)打开那些有点黑客的答案,比如移动复选标记的框架,直到它离开屏幕.此应用程序供内部使用,无需获得App Store批准.但鉴于UItableVIEw进入编辑模式时会自动创建复选标记,我甚至不知道如何将它们作为要更改的对象.任何帮助,将不胜感激!

解决方法 你必须继承你的UItableVIEwCell并覆盖(voID)setEditing:animated:方法,如下所示:

#import "MyCustomCell.h"@implementation MyCustomCell- (ID)initWithStyle:(UItableVIEwCellStyle)style reuseIDentifIEr:(Nsstring *)reuseIDentifIEr{    self = [super initWithStyle:style reuseIDentifIEr:reuseIDentifIEr];    if (self) {        // Initialization code    }    return self;}- (voID)setSelected:(BOol)selected animated:(BOol)animated{    [super setSelected:selected animated:animated];    // Configure the vIEw for the selected state}- (voID)setSelectedBackgroundVIEw:(UIVIEw *)selectedBackgroundVIEw{    //Cell Selected color: CLEAR    [super setSelectedBackgroundVIEw:selectedBackgroundVIEw];}- (voID)setEditing:(BOol)editing animated:(BOol)animated{    //Cell Edit Mode NO Indent & Selected color: CLEAR    [super setEditing:NO animated:animated];    [self setNeedsLayout];}@end

执行此 *** 作后,转到Inteface Builder并使您的单元格成为MyCustomCell类的一部分.

在IB中将单元格作为MyCustomCell类的一部分后,在UItableVIEwController中导入MyCustomCell.h并在代码中修改以下内容:

- (UItableVIEwCell *)tableVIEw:(UItableVIEw *)tableVIEw cellForRowAtIndexPath:(NSIndexPath *)indexPath {    MyCustomCell *testCell = [tableVIEw dequeueReusableCellWithIDentifIEr:@"cell"];    if(testCell == nil) {        testCell = [[MyCustomCell alloc] initWithStyle:UItableVIEwCellStyleDefault reuseIDentifIEr:@"cell"];    }    [[testCell textLabel] setText:@"Test Cell"];    return testCell;}

更新:
您还可以在tableVIEw的tableVIEw中执行以下 *** 作:editingStyleForRowAtIndexPath:

- (UItableVIEwCellEditingStyle)tableVIEw:(UItableVIEw *)tableVIEw editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{            return UItableVIEwCellEditingStyleNone;}

但是你会让你的细胞缩进.要删除该缩进,您必须继承Cell.

这样做你应该很好!我刚试过它,它的工作方式就是你想要的!

总结

以上是内存溢出为你收集整理的ios – 在编辑模式下隐藏UITableView多重选择中的复选标记全部内容,希望文章能够帮你解决ios – 在编辑模式下隐藏UITableView多重选择中的复选标记所遇到的程序开发问题。

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

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

原文地址: https://outofmemory.cn/web/1060693.html

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

发表评论

登录后才能评论

评论列表(0条)

保存