ActionMenu is a SwiftUI library that provides a flexible and easy-to-use menu component for iOS applications, similar to the one in Apple's built-in mail app.
- iOS 18.0+
- Swift 6.0+
- In Xcode, open your project and navigate to File > Add Packages...
- In the search field, enter the package repository URL:
<repository_url>
- Select the package when it appears in the search results
- Choose your target application in the "Add to Project" field
- Click "Add Package"
Add the following dependency to your Package.swift
file:
dependencies: [
.package(url: "<repository_url>", from: "1.0.0")
]
Then, include "ActionMenu" as a dependency for your target:
targets: [
.target(
name: "YourTarget",
dependencies: ["ActionMenu"])
]
- Import the package in your SwiftUI file:
import SwiftUI
import ActionMenu
- Use the
.actionMenu
modifier on any view:
.actionMenu(title: "Actions", isPresented: $isShowingMenu) {
Button("Option 1") {
// Handle option 1
}
Button("Option 2") {
// Handle option 2
}
}
Here's a complete example showing how to use ActionMenu with a list:
struct ContentView: View {
@State private var isMoreActionTapped = false
@State private var selectedItem: String? = nil
var body: some View {
List(items, id: \.self) { item in
Text(item)
.swipeActions {
Button("More", systemImage: "ellipsis.circle") {
selectedItem = item
isMoreActionTapped.toggle()
}
}
}
.actionMenu(title: "Actions", isPresented: $isMoreActionTapped) {
Button("Flag", systemImage: "flag") {
// Handle edit action
}
Button("Delete", role: .destructive) {
// Handle delete action
}
}
}
}
[TODO: add DocC documentation]
Contributions are welcome! Please feel free to submit a PR.
ActionMenu is licensed under the Apache 2 license. See the LICENSE file for details.
Peter Friese