swift - Mac 催化剂 : tableView allowmultipleselection not working

标签 swift mac-catalyst

我有一个允许多选的tableview。我已经在 viewDidLoad 中将 allowedMultipleSelection 和 allowedMultipleSelectionDuringEditing 设置为 true ,这在 iOS 和 iPadOS 上都可以完美运行。我决定今天试用 Catalyst,该应用程序看起来不错,只是我无法在此 View 中选择多行。有任何想法吗?这是下面的代码。提前谢谢了。

//允许多选

override func viewDidLoad() 
{
    super.viewDidLoad()

    self.tableView.allowsMultipleSelection = true
    self.tableView.allowsMultipleSelectionDuringEditing = true
.....
}

//限制选择为7行
override func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath? {
    if let selectedItems = tableView.indexPathsForSelectedRows {

        if selectedItems.count > 6 {
            return nil
        }
    }
    return indexPath
}

@IBAction func doneButtonTapped(_ sender: UIBarButtonItem) {

...

    let selectedIndexPaths = tableView.indexPathsForSelectedRows
    if !selectedIndexPaths!.isEmpty {
        for index in selectedIndexPaths! {
            let selectedProcedure = fetchedResultsController?.object(at: index) as! Item
...

Rest of code to perform the required task
}

最佳答案

macOS Catalyst 上的多项选择与 iOS 和 iPadOS 上的工作方式不同,这似乎是一个错误或对预期行为的不幸选择。

在 macOS Catalyst 上,如果您通过将 tableView.allowsMultipleSelectionDuringEditing 设置为 true 来启用编辑模式下的多选,则一次只能通过指针单击直接选择一行。但是,通过选择第一行然后在选择第二行时按住 SHIFT 来启用连续行的多选,通过选择第一行然后在选择其他行时按住 COMMAND 来启用非连续行的多选。这是类似于 Mac 的行为,因为它是多选通常在 macOS 上工作的方式。所以这可能是有意的行为。但如果是这种情况,那就是难以发现的行为,而不是 iOS/iPadOS 用户可能期望的行为,并且与 iOS 和 iPadOS 的工作方式不同。它会导致其他问题 - 例如,在代码中,我有一个“全选”功能,可以从 iOS/iPadOS 上的代码中选择所有行,而此代码在 macOS Catalyst 上不起作用。

我对此提出了反馈意见。 GitHub 上有一个简单的项目,地址为 WB2ISS/MultipleSelection这说明了问题。

关于swift - Mac 催化剂 : tableView allowmultipleselection not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60856636/

相关文章:

swift - VideoComposition 不遵守指示

ios - 在 Intel Mac 上构建或运行 Mac Catalyst 应用程序?

ios - 如何使用 Swift 4 验证数组中的特定键值

ios - 如何使用催化剂在 ios 和 macos 中弹出文档选择器

ios - Mac Catalyst 滑动删除功能在 Mac 上不起作用

ios - 如何有条件地为 Catalyst 编译代码?

ios - 在 Swift 中可靠地获取 iOS 应用程序的 “~/Library” 路径

Xcode Storyboard - 在哪里设置 UITableViewCell 高度

ios - CoreBluetooth 特征值被覆盖为零