ios – 自定义UITableViewCell,UITableView和allowsMultipleSelectionDuringEditing

ios – 自定义UITableViewCell,UITableView和allowsMultipleSelectionDuringEditing,第1张

概述我在使用iOS 5新功能在编辑模式下选择多个单元格时遇到问题. 应用程序结构如下: -> UIViewController---> UITableView----> CustomUITableViewCell 其中UIViewController是UITableView的委托和数据源(出于需求原因,我使用的是UIViewController而不是UITableViewController,我无 我在使用iOS 5新功能在编辑模式下选择多个单元格时遇到问题.
应用程序结构如下:

-> UIVIEwController---> UItableVIEw----> CustomUItableVIEwCell

其中UIVIEwController是UItableVIEw的委托和数据源(出于需求原因,我使用的是UIVIEwController而不是UItableVIEwController,我无法更改它).像下面的代码一样将单元格加载到UItableVIEw中.

- (UItableVIEwCell *)tableVIEw:(UItableVIEw *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath{    CustomtableVIEwCell *cell = (CustomtableVIEwCell*)[tv dequeueReusableCellWithIDentifIEr:kCelltableIDentifIEr];    if (cell == nil)    {        [[NSBundle mainBundle] loadNibnamed:@"CustomtableVIEwCellXib" owner:self options:nil];             cell = self.customtableVIEwCellOutlet;            cell.selectionStyle = UItableVIEwCellSelectionStyleNone;    }    // configure the cell with data    [self configureCell:cell atIndexPath:indexPath];        return cell;}

已从xib文件创建单元接口.特别是,我创建了一个新的xib文件,其中supervIEw包含一个UItableVIEwCell元素.为了提供自定义,我将该元素的类型设置为CustomUItableVIEwCell,其中CustomUItableVIEwCell扩展了UItableVIEwCell.

@interface CustomtableVIEwCell : UItableVIEwCell// do stuff here@end

代码效果很好.在表格中显示自定义单元格.现在,在应用程序执行期间,我将allowsMultipleSelectionDuringEditing设置为YES,然后进入UItableVIEw的编辑模式.看起来很有效.实际上,每个单元格旁边都会出现一个空圆圈.问题是,当我选择一行时,空圆圈不会改变其状态.理论上,圆圈必须从空变为红色复选标记,反之亦然.似乎圆圈仍然位于单元格的contentVIEw之上.

我做了很多实验.我还检查了以下方法.

- (NSArray *)indexPathsForSelectedRows

并且在编辑模式中选择时会更新.它显示正确的选定单元格.

对我来说不太清楚的是,当我尝试在没有自定义单元格的情况下工作时,仅使用UItableVIEwCell,圆圈会正确更新其状态.

你有什么建议吗?先感谢您.

解决方法 对于那些感兴趣的人,我找到了解决上一个问题的有效解决方案.
问题是当选择样式为UItableVIEwCellSelectionStyleNone时,编辑模式下的红色复选标记无法正确显示.解决方案是创建一个自定义UItableVIEwCell并ovverrIDe一些方法.我正在使用awakeFromNib,因为我的单元格是通过xib创建的.为了达到解决方案,我遵循了以下两个stackoverflow主题:

> multi-select-table-view-cell-and-no-selection-style
> uitableviewcell-how-to-prevent-blue-selection-background-w-o-borking-isselected

这里的代码:

- (voID)awakeFromNib{    [super awakeFromNib];    self.backgroundVIEw = [[[UIImageVIEw alloc] initWithImage:[UIImage imagenamed:@"row_normal"]] autorelease];    self.selectedBackgroundVIEw = [[[UIImageVIEw alloc] initWithImage:[UIImage imagenamed:@"row_selected"]] autorelease];}- (voID)setSelected:(BOol)selected animated:(BOol)animated{    if(selected && !self.isEditing)    {        return;    }            [super setSelected:selected animated:animated];}- (voID)setHighlighted: (BOol)highlighted animated: (BOol)animated{    // don't highlight}- (voID)setEditing:(BOol)editing animated:(BOol)animated{    [super setEditing:editing animated:animated];}

希望能帮助到你.

总结

以上是内存溢出为你收集整理的ios – 自定义UITableViewCell,UITableView和allowsMultipleSelectionDuringEditing全部内容,希望文章能够帮你解决ios – 自定义UITableViewCell,UITableView和allowsMultipleSelectionDuringEditing所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存