如何防止使用AllowMultipleSelection = True取消选择TableView中的最后一个选项?

时间:2018-01-08 22:55:05

标签: ios swift uitableview

我有一个带有AllowMultipleSelection = True的TableView,允许用户选择任意数量的行。我希望我的TableView至少选择一个选项,这样用户就不会选择任何选项。

如何实现验证,以便当用户尝试取消选择TableView中最后选择的选项时,它仍会保持选中状态?

1 个答案:

答案 0 :(得分:2)

确保将您的类设置为UITableView的委托,然后将其放入:

        int[][] numbers = {
                {3, 2, 5},
                {1, 4, 4, 8, 13},
                {9, 1, 0, 2},
                {0, 2, 6, 3, -1, -8}
        };

        int max = 0;


//Adding each row in the array
        int sum;
        for(int r = 0; r < numbers.length; r++) {
            sum = 0;
            for(int c = 0; c < numbers[r].length; c++) {
                sum += numbers[r][c];
                if(numbers[r].length > max){
                    max = numbers[r].length;
                }
            }
            System.out.println("Sum of row: " + sum);
        }
        System.out.println("Max " + max);

//Adding each column in the row
        int sum2;
        for(int c = 0; c < max; c++) {
            sum2 = 0;
            for(int y = 0; y < numbers.length; y++){
                if(numbers[y].length > c){
                    sum2 += numbers[y][c];
                    System.out.println(numbers[y][c]);
                }
            }
            System.out.println("Sum of column: " + sum2);
        }
    }

如果没有选定的单元格(不应该真的发生)或者只有一个选定的单元格,则可以防止取消选择单元格。

它可能会被简化为:

func tableView(_ tableView: UITableView, willDeselectRowAt indexPath: IndexPath) -> IndexPath? {
    if let selectedIndices = tableView.indexPathsForSelectedRows {
        return selectedIndices.count > 1 ? indexPath : nil
    } else {
        return nil
    }
}

因为我没有看到如果你没有选定的指标你怎么能取消选择,但我不想强制打开包装以防万一。