应用程序结构如下:
-> 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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)