Ma c Catalyst: tableView разрешить множественный выбор не работает - PullRequest
2 голосов
/ 25 марта 2020

У меня есть таблица, которая позволяет множественный выбор. Я установил и allowMultipleSelection и позволяет MultipleSelectionDuringEditing значение true в viewDidLoad, и это прекрасно работает как на iOS, так и на iPadOS. Я решил попробовать Catalyst сегодня, и приложение выглядит хорошо, за исключением того, что я не могу выбрать несколько строк в этом представлении. Любые идеи? Вот код ниже. Заранее большое спасибо.

// разрешить множественный выбор

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
}

1 Ответ

3 голосов
/ 30 марта 2020

Множественный выбор в macOS Catalyst не работает так же, как в iOS и iPadOS, и это может быть ошибкой или неудачным выбором предполагаемого поведения.

В macOS Catalyst, если вы включили множественный выбор в режиме редактирования, установив для tableView.allowsMultipleSelectionDuringEditing значение true, только одна строка за раз может быть непосредственно выбрана нажатием указателя. Однако множественный выбор смежных строк включается путем выбора первой строки, а затем удержания клавиши SHIFT при выборе второй строки, а множественный выбор несмежных строк включается путем выбора первой строки, а затем удерживания COMMAND при выборе дополнительных строк. Это поведение, подобное Ma c, в том смысле, что множественный выбор обычно работает в macOS. Так что вполне возможно, что это было намеренное поведение. Но если это так, то это поведение, которое трудно обнаружить, а не то, что может ожидать пользователь iOS / iPadOS, и оно работает иначе, чем на iOS и iPadOS. И это вызывает другие проблемы - например, в коде у меня есть функция «Выбрать все», которая позволяет выбирать все строки из кода на iOS / iPadOS, и этот код не работает на MacOS Catalyst.

Я оставил отзыв об этом. На GitHub существует простой проект WB2ISS / MultipleSelection , который демонстрирует проблему.

...