多个复选标记附件在 iOS7 中无法正常工作

Posted

技术标签:

【中文标题】多个复选标记附件在 iOS7 中无法正常工作【英文标题】:Multiple checkmark accessory not working properly in iOS7 【发布时间】:2014-10-27 19:20:31 【问题描述】:

我有一个 UITableview,它列出了用户可以选择用来过滤另一个列表的选项。当单击此表格视图中的项目时,会出现一个复选标记,如果再次单击它,复选标记就会消失。允许用户单击多个 tableview 单元格以同时在许多单元格上显示复选标记。表格视图也分为多个部分。

这在 ios 8 上一切正常,但是当我在 iOS 7 上运行它时,当我单击单元格时,复选标记不会出现。如果我转到另一个视图然后返回到 tableview 复选标记就在那里。我在***上搜索了其他帖子,这些帖子建议我应该尝试将单元格的色调设置为黑色,我尝试过但不起作用。

我还用带有复选标记图像的自定义单元格替换了复选标记,我将其取消隐藏和隐藏。当我单击它们时,这里会显示复选标记,但是当我再次单击它们时,它不会消失。为了清楚起见,我将附上下面的代码。

@property NSMutableArray *favorite;
@property NSMutableArray *favoriteCheckmark;

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
FilterCell *cell = [tableView dequeueReusableCellWithIdentifier:@"filtercell" forIndexPath:indexPath];
switch (indexPath.section) 
    case 0:
        cell.textLabel.text = [favorite objectAtIndex:indexPath.row];
        if ([favoriteCheckmark containsObject:indexPath])
            cell.accessoryType = UITableViewCellAccessoryCheckmark;
        else
            cell.accessoryType = UITableViewCellAccessoryNone;
        
        break;
    


-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
FilterCell *cell = [tableView dequeueReusableCellWithIdentifier:@"filtercell" forIndexPath:indexPath];
switch (indexPath.section) 
    case 0:
        cell.textLabel.text = [favorite objectAtIndex:indexPath.row];
        if ([favoriteCheckmark containsObject:indexPath])
            [favoriteCheckmark removeObject:indexPath];
        else
            [favoriteCheckmark addObject:indexPath];
        
        break;
    

【问题讨论】:

【参考方案1】:

我不是很肯定,但这可能与它有关:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
FilterCell *cell = [tableView dequeueReusableCellWithIdentifier:@"filtercell" forIndexPath:indexPath];
switch (indexPath.section) 
    case 0:
        cell.textLabel.text = [favorite objectAtIndex:indexPath.row];
        if ([favoriteCheckmark containsObject:indexPath])
            [favoriteCheckmark removeObject:indexPath];
        else
            [favoriteCheckmark addObject:indexPath];
        
        break;
    

你来电:

FilterCell *cell = [tableView dequeueReusableCellWithIdentifier:@"filtercell" forIndexPath:indexPath];

Press 已打开,它正在排队一个新的单元格,并且可能会导致问题。尝试删除该行,看看会发生什么。

注意

即使这不能解决您的问题,您也应该删除该行。它无法在当前位置发挥作用。

【讨论】:

另外,在 didSelectRowAtIndexPath 方法中没有 reloadData 调用来更新 UI 以匹配新更新的模型。

以上是关于多个复选标记附件在 iOS7 中无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 处理表格视图多个部分的自定义复选标记按钮状态

wordpress metabox中的多个复选框

选中复选框时检查Android listview多个项目

在 ios7 中的多个图像的 UIScrollview 中捏缩放不起作用

向不同部分的单元格添加多个复选标记,并将其状态保存在Swift iOS中

UITableView 具有多个具有多行的部分。我需要部分独立运行