https://github.com/iletai/basenavigationstack
Build a navigation controller with Navigation Stack SwiftUI
https://github.com/iletai/basenavigationstack
navigationstack swiftpackagemanager swiftui
Last synced: 3 months ago
JSON representation
Build a navigation controller with Navigation Stack SwiftUI
- Host: GitHub
- URL: https://github.com/iletai/basenavigationstack
- Owner: iletai
- License: mit
- Created: 2023-12-14T09:05:11.000Z (about 2 years ago)
- Default Branch: develop
- Last Pushed: 2024-10-27T05:52:50.000Z (over 1 year ago)
- Last Synced: 2024-10-27T06:45:03.863Z (over 1 year ago)
- Topics: navigationstack, swiftpackagemanager, swiftui
- Language: Swift
- Homepage:
- Size: 26.4 KB
- Stars: 7
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# BaseNavigationStack
Build a navigation controller with Navigation Stack SwiftUI
[](https://swift.org)
[](https://developer.apple.com/ios/)
BaseNavigationStack is a Swift package that provides a flexible and reusable base class for managing navigation stacks in SwiftUI applications.
## Overview
`BaseNavigationStack` is designed to simplify the management of navigation stacks in SwiftUI applications. It introduces a generic approach to handle different types for views and presentation targets. This allows you to build navigation flows with ease, supporting various types of views and presentation styles.
## Example:
[
](https://github.com/iletai/BaseNavigationStack/assets/26614687/9f4ae052-577d-4b99-bf5a-39eee6e75c9a)
## Installation
### Swift Package Manager
You can use the Swift Package Manager to install `BaseNavigationStack` by adding it to your `Package.swift` file:
```swift
dependencies: [
.package(url: "https://github.com/iletai/BaseNavigationStack.git", from: "1.0.0"),
],
targets: [
.target(name: "YourTarget", dependencies: ["BaseNavigationStack"]),
]
```
## Usage
1. Import the `BaseNavigationStack` module into your Swift file:
```swift
import BaseNavigationStack
```
2. Build In View:
```swift
struct ContentView: View {
@State
var navigationRouter = BaseNavigationStack<
ViewNavigationTarget,
SheetViewPresentTarget
>(
isPresented: .constant(.splash)
)
var body: some View {
NavigationStack(path: navigationRouter.navigationPath) {
BaseView()
.withNavigationRouter()
.withSheetRouter(sheetDestination: navigationRouter.presentingSheet)
}
.environment(navigationRouter)
}
}
```
3. Quick To Push/Present View
```swift
struct ListView: View {
@Environment(BaseNavigationStack.self)
var navigationRouter
var body: some View {
VStack {
Text("List View")
.font(.title)
.fontWeight(.bold)
HStack {
Button {
navigationRouter.pushToView(.splash)
} label: {
Text("Splash")
}
Button {
navigationRouter.popBack()
} label: {
Text("Pop Back")
}
Button {
navigationRouter.navigateToRoot()
} label: {
Text("Pop To Root")
}
}
.buttonStyle(.bordered)
Spacer()
}
}
}
```