Лист действий — это компонент, который отображает набор вариантов выбора для пользователя в модальном формате.

UIKit

В iOS вы можете создать лист действий, используя UIAlertController со стилем .actionSheet.

Вот пример того, как создать лист действий в Swift:

let actionSheet = UIAlertController(title: "Choose an option", message: nil, preferredStyle: .actionSheet)

let option1 = UIAlertAction(title: "Option 1", style: .default) { _ in
  // Handle the selection of option 1
}

let option2 = UIAlertAction(title: "Option 2", style: .default) { _ in
  // Handle the selection of option 2
}

let cancel = UIAlertAction(title: "Cancel", style: .cancel) { _ in
  // Handle the cancellation of the action sheet
}

actionSheet.addAction(option1)
actionSheet.addAction(option2)
actionSheet.addAction(cancel)

present(actionSheet, animated: true, completion: nil)

В этом примере переменная actionSheet представляет собой переменную UIAlertController со стилем .actionSheet. Объекты UIAlertAction представляют собой варианты выбора, отображаемые на листе действий, и могут быть настроены с помощью различных стилей (.default, .cancel, .destructive и т. д.) и блоков обработчика для ответа на выбор пользователя.

Это отобразит приведенный выше лист действий.

SwiftUI

Чтобы представить лист в SwiftUI, следуйте приведенному ниже примеру:

import SwiftUI
import PlaygroundSupport

struct ContentView: View {
  @State private var showActionSheet = false
  @State private var selectedOption: String?

  var body: some View {
    Button("Show action sheet") {
      self.showActionSheet = true
    }
    .actionSheet(isPresented: $showActionSheet) {
      ActionSheet(
        title: Text("Choose an option"),
        message: Text("This is a message"),
        buttons: [
          .default(Text("Option 1")) {
            self.selectedOption = "Option 1"
          },
          .default(Text("Option 2")) {
            self.selectedOption = "Option 2"
          },
          .cancel()
        ]
      )
    }
  }
}

PlaygroundPage.current.setLiveView(
  ContentView()
    .frame(width: 400, height: 700, alignment: .center)
)

Аналогично имеем:

Первоначально опубликовано на https://needone.app 5 января 2023 г.