ios - 相同的代码在一个项目中有效,在另一个项目中无效

标签 ios swift uitableview

我正在做一个项目,它有一个静态 TableView 。此 TableView 包含三个部分,每个部分都有不同的行数。我正在使用一个代码,它允许同时选择不同部分的不同行,但不能从同一部分选择两个不同的行。这是代码:

switch indexPath.section {
    case 0:
        switch indexPath.row {
        case 0:
            oneDollarRestaurantCell.accessoryType = .checkmark
            oneDollarRestaurantCell.isSelected = true
            twoDollarRestaurantCell.accessoryType = .none
            twoDollarRestaurantCell.isSelected = false
            threeDollarRestaurantCell.accessoryType = .none
            threeDollarRestaurantCell.isSelected = false
            fourDollarRestaurantCell.accessoryType = .none
            fourDollarRestaurantCell.isSelected = false
        case 1:
            twoDollarRestaurantCell.accessoryType = .checkmark
            twoDollarRestaurantCell.isSelected = true
            oneDollarRestaurantCell.accessoryType = .none
            oneDollarRestaurantCell.isSelected = false
            threeDollarRestaurantCell.accessoryType = .none
            threeDollarRestaurantCell.isSelected = false
            fourDollarRestaurantCell.accessoryType = .none
            fourDollarRestaurantCell.isSelected = false
        case 2:
            threeDollarRestaurantCell.accessoryType = .checkmark
            threeDollarRestaurantCell.isSelected = true
            twoDollarRestaurantCell.accessoryType = .none
            twoDollarRestaurantCell.isSelected = false
            oneDollarRestaurantCell.accessoryType = .none
            oneDollarRestaurantCell.isSelected = false
            fourDollarRestaurantCell.accessoryType = .none
            fourDollarRestaurantCell.isSelected = false
        case 3:
            fourDollarRestaurantCell.accessoryType = .checkmark
            fourDollarRestaurantCell.isSelected = true
            twoDollarRestaurantCell.accessoryType = .none
            twoDollarRestaurantCell.isSelected = false
            threeDollarRestaurantCell.accessoryType = .none
            threeDollarRestaurantCell.isSelected = false
            oneDollarRestaurantCell.accessoryType = .none
            oneDollarRestaurantCell.isSelected = false
        default:
            break

        }
    case 1:
        switch indexPath.row {
        case 0:
            within500MetersCell.accessoryType = .checkmark
            within500MetersCell.isSelected = true
            within1000MetersCell.accessoryType = .none
            within1000MetersCell.isSelected = false


        case 1:
            within1000MetersCell.accessoryType = .checkmark
            within1000MetersCell.isSelected = true
            within500MetersCell.accessoryType = .none
            within500MetersCell.isSelected = false

        default:
            break
        }
    case 2:
        switch indexPath.row {
        case 0:
            sortByFromAtoZCell.accessoryType = .checkmark
            sortByFromAtoZCell.isSelected = true
            sortByFromZtoACell.accessoryType = .none
            sortByFromZtoACell.isSelected = false
            sortByDistanceCell.accessoryType = .none
            sortByDistanceCell.isSelected = false
            sortByPriceCell.accessoryType = .none
            sortByPriceCell.isSelected = false
        case 1:
            sortByFromZtoACell.accessoryType = .checkmark
            sortByFromZtoACell.isSelected = true
            sortByFromAtoZCell.accessoryType = .none
            sortByFromAtoZCell.isSelected = false
            sortByDistanceCell.accessoryType = .none
            sortByDistanceCell.isSelected = false
            sortByPriceCell.accessoryType = .none
            sortByPriceCell.isSelected = false
        case 2:
            sortByDistanceCell.accessoryType = .checkmark
            sortByDistanceCell.isSelected = true
            sortByFromZtoACell.accessoryType = .none
            sortByFromZtoACell.isSelected = false
            sortByFromAtoZCell.accessoryType = .none
            sortByFromAtoZCell.isSelected = false
            sortByPriceCell.accessoryType = .none
            sortByPriceCell.isSelected = false
        case 3:
            sortByPriceCell.accessoryType = .checkmark
            sortByPriceCell.isSelected = true
            sortByFromZtoACell.accessoryType = .none
            sortByFromZtoACell.isSelected = false
            sortByDistanceCell.accessoryType = .none
            sortByDistanceCell.isSelected = false
            sortByFromAtoZCell.accessoryType = .none
            sortByFromAtoZCell.isSelected = false

        default:
            break
        }

    default:
        break
    }

}

我在这里检查部分,并在其中检查每一行。这工作正常,但突然停止了。

已编辑

预期结果如下:

enter image description here

实际结果如下:

enter image description here

我没有更改该类中的任何内容。相同的代码在另一个项目中仍然有效,所以我很绝望,因为我不明白是什么导致了这个问题。我已经尝试了一切,甚至将文件从工作项目复制到这个项目(文件结构完全相同)。你有什么建议吗?

最佳答案

据我所知,您提供的示例之间的主要区别在于多项选择。要为 UITableView 启用此功能,您可以在属性检查器中将 selection 属性的值设置为 multiple selection

您还可以通过将 allowsMultipleSelection 属性设置为 true 来覆盖此参数。我不完全确定,但我怀疑在您的第一个项目中,此属性是在代码中设置的。

关于ios - 相同的代码在一个项目中有效,在另一个项目中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47188257/

相关文章:

java - 如何测试Web服务连接

ios - 通过 api 调用在应用程序购买中添加 iTunes

ios - TableViewController 不显示完整内容

Swift 向请求添加参数

swift - 完美,快速,从处理程序中的请求获取服务器地址

ios - 如何停止 View Controller 以获取 tableView 单元格 subview 的触摸?

ios - Swift:垂直滚动内水平滚动内垂直滚动

iphone - 隐藏注释副标题,或更改颜色

ios - 无法返回 cellForRowAtIndexPath 中的单元格

ios - 当 UITableview 是自定义 UIView 的 subview 时处理 UITableView 委托(delegate)