SwiftUI Generi c ContextMenu view - PullRequest
       38

SwiftUI Generi c ContextMenu view

1 голос
/ 29 апреля 2020

У меня есть список, показывающий изображения продукта и некоторую базовую c информацию.

Когда пользователь нажимает на конкретное изображение продукта, он фактически отображает контекстное меню для таких действий, как «сохранить изображение» и т.д. c.

Ниже приведен упрощенный пример кода для того, что у меня есть.

    Image("imageofProduct1")
        .contextMenu {
            Button("Save", action: {
                // Proceed with save function for Product 1
            })
    }

Поскольку у меня могут быть изображения продуктов в разных частях приложения. Есть ли способ для меня создать универсальное c ContextMenu, где оно будет отображать то же действие «сохранить», но также может принять имя интересующего изображения.

В настоящее время я могу Переместите контекстное меню в следующее:

func ContextMenuContent() -> some View {
    return Button("Save") {
        // Save function of the image
    }
}

В основной части я могу отобразить то же контекстное меню:

Image("imageofProduct1")
        .contextMenu(menuItems: ContextMenuContent)

Если я хочу переместить функцию ContextMenu в отдельный файл. Для инкапсуляции, могу ли я как-то передать имя изображения, чтобы функция сохранения изображения выполнялась на основе имени предоставленного изображения?

1 Ответ

0 голосов
/ 29 апреля 2020

Подход может быть следующим:

func ContextMenuContent(_ imageName: String) -> some View {
    return Button("Save") {
        // Save function of the image
        // use imageName here
    }
}

и использование

Обновлено: (протестировано с Xcode 11.4)

// it does not matter how it get here
let imageName = "imageofProduct1" 

//...

Image(imageName) // or same constant here and below
        .contextMenu { ContextMenuContent(imageName) } // here !!
...