SwiftUI ActionSheet разный цвет для каждого действия

У меня есть вопрос относительно Actionsheet в SwiftUI. Я хочу создать ActionSheet с двумя вариантами: удалить и отменить. Кнопка «Удалить» окрашена в красный цвет, а кнопка «Отмена» - в зеленый.

Вот пример кода:

Button(action: {
                    print("Delete button pressed")
                    self.showingActionSheet = true
                }){
                    Text("Go to actions")
                        .foregroundColor(.green)
                        .font(.body)
                        .padding()
                }
                .actionSheet(isPresented: $showingActionSheet) {                   
                    return ActionSheet(title: Text("Delete images"), buttons: [
                        .default(Text("Delete selected").foregroundColor(.red)){
                            // some action to do
                        },
                        .cancel()
                    ])
                }

Проблема в том, что цвет действий по умолчанию (синий) для обеих кнопок. Я могу изменить это, добавив следующую строку в SceneDelegate.swift или даже в код выше.

UIView.appearance(whenContainedInInstancesOf: [UIAlertController.self]).tintColor = UIColor(named: "green")

Проблема с этой строкой в ​​том, что она заменяет общий цвет с синего на зеленый. Еще нужно найти решение, как раскрасить каждое действие по-разному.

Вот как это выглядит: предварительный просмотр изображения

Есть ли у вас какие-нибудь предложения?


person Theodor Ungureanu    schedule 20.07.2020    source источник


Ответы (1)


Есть еще один стиль кнопок для таких действий, как удаление

демо

.actionSheet(isPresented: $showingActionSheet) {
    return ActionSheet(title: Text("Delete images"), buttons: [
        .destructive(Text("Delete selected")){
            // some action to do
        },
        .cancel()
    ])
}
person Asperi    schedule 20.07.2020
comment
Спасибо за ответ. Он хорошо работает в представленном мной случае. Но если мне нужен другой цвет, кроме красного (скажем, фиолетовый), есть ли возможность сделать это? - person Theodor Ungureanu; 20.07.2020